ldtk
ldtk copied to clipboard
Setting entity reference values causes a crash
TL;DR: I had an entity with an array of references to the same entity type and was auto-chaining them. At one point, I deleted something in the middle of the chain, added another one in the same place as the deleted one, went to an entity it was connected to, changed one of that one's connections to instead refer to the new one, and it crashed.
My project was almost completely empty, so I've put the few things that were in it here in the hopes it narrows down the cause. I wouldn't be surprised if I'm misremembering a couple things but this should be mostly accurate.
The project only had a single entity type, 'Surface_Node', which is the one described above (so if you see me refer to an entity, it's this one). Here's its settings (excluding anything I'm pretty sure aren't relevant). Tags: TERRAIN_NODE Variables:
- connection_solid (Array<Entity ref>) - allowed references: Only another 'Surface_Node's, all checkboxes set to true
- (I never used/modified this variable) connection_grate (Array<Entity ref>) - same settings as above, except auto-chain was set to false
- (I never used/modified this variable) Curve_Point (Bool) - default: false
The project only had a single layer which was an entity layer containing these entities. It required the TERRAIN_NODE tag. The project had 2 levels which were adjacent to each other. Other than that, there was nothing else in the project.
Here's what I did leading up to the crash, to the best of my memory.:
- Create a chain of entities (most were on the first level, but one was on the other level)
- Delete one of the entities in the middle of the chain
- Place a new entity in the same place as the one I just deleted
- I edited the other remaining entity reference that the deleted entity's former neighbor had, setting it to reference the new entity I just created
- Crash
I've tried to reproduce the issue by doing these steps in the same project but I can't get it to occur again, so I think I'm probably missing something. There were other somewhat similarly configured entities in the project that I had since deleted (or that I didn't save before encountering another crash, which I mindlessly closed before I could report - sorry!), so maybe that's part of it. Or maybe I'm just misremembering what I did to crash it this time.
Stack:
LDtk version: 1.1.3-64bits
Cannot read properties of null (reading 'getEntityRefFieldTo')
TypeError
TypeError: Cannot read properties of null (reading 'getEntityRefFieldTo')
at data_inst_EntityInstance.tidyLostSymmetricalEntityRefs (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:34540:16)
at data_inst_EntityInstance.tidyLostSymmetricalEntityRefs (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:34560:8)
at data_inst_FieldInstance.setEntityRefTo (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:36000:12)
at ui_vp_EntityRefPicker.vp.onPickValue (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:211178:9)
at ui_vp_EntityRefPicker.onPick (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:219289:8)
at ui_vp_EntityRefPicker.onPick (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:231962:35)
at ui_vp_EntityRefPicker.onMouseDown (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:219307:10)
at page_Editor.onMouseDown (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:180745:22)
at page_Editor.onHeapsEvent (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:180687:9)
at h2d_Scene.dispatchListeners (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:95519:4)
Processes:
#0 App
|--- #3 page.Editor
|--- #4 misc.FileWatcher
|--- #5 display.WorldRender
|--- #6 display.LevelRender
|--- #7 display.Camera
|--- #8 display.Rulers[--]
|--- #9 tool.SelectionTool[--]
|--- #10 tool.lt.DoNothing[--]
|--- #11 WorldTool
|--- #12 tool.PanView[--]
|--- #208 tool.lt.EntityTool[--]
|--- #626 display.EntityRender
|--- #627 display.EntityRender
|--- #628 display.EntityRender
|--- #629 display.EntityRender
|--- #630 display.EntityRender
|--- #631 display.EntityRender
|--- #632 display.EntityRender
|--- #633 display.EntityRender
|--- #634 ui.EntityInstanceEditor
|--- #635 tool.ResizeTool[--]
|--- #636 ui.vp.EntityRefPicker
Log:
[EVENT] EntityInstanceChanged 1
[EVENT] EntityInstanceChanged 1
[EVENT] LevelSelected 0
[WARNING] Full level render requested
[RENDER] Rendering world bg...
[RENDER] Rendering world level data.Level.Level_0(#0)...
[RENDER] Rendering world level fields data.Level.Level_0(#0)...
[RENDER] Rendering world level data.Level.Level_1(#8)...
[EVENT] LevelSelected 8
[WARNING] Full level render requested
[RENDER] Rendering world bg...
[RENDER] Rendering world level data.Level.Level_0(#0)...
[RENDER] Rendering world level fields data.Level.Level_1(#8)...
[RENDER] Rendering world level data.Level.Level_1(#8)...
[FILE] Reading HTML template worldPanel from cache
[FILE] Reading HTML template levelInstanceForm from cache
[RENDER] Rendering world bg...
[RENDER] Rendering world level data.Level.Level_1(#8)...
[EVENT] LevelSelected 0
[WARNING] Full level render requested
[RENDER] Rendering world bg...
[RENDER] Rendering world level data.Level.Level_0(#0)...
[RENDER] Rendering world level fields data.Level.Level_0(#0)...
[RENDER] Rendering world level data.Level.Level_1(#8)...
[EVENT] LayerInstancesRestoredFromHistory 5
[RENDER] Rendering world bg...
[EVENT] LayerInstancesRestoredFromHistory 5
[RENDER] Rendering world bg...
[EVENT] LayerInstancesRestoredFromHistory 5
[RENDER] Rendering world bg...
[EVENT] LayerInstancesRestoredFromHistory 5
[RENDER] Rendering world bg...
[EVENT] LayerInstancesRestoredFromHistory 5
[RENDER] Rendering world bg...
[EVENT] LayerInstanceEditedByTool
[FILE] Reading HTML template entityInstanceEditor from cache
[EVENT] EntityInstanceAdded 1
[RENDER] Rendering world bg...
[FILE] Reading HTML template entityInstanceEditor from cache
[RENDER] Rendering world bg...
[FILE] Reading HTML template valuePicker from cache
[RENDER] Rendering world bg...
[GENERAL] Page started: page.CrashReport()
[FILE] Loading page template: crashReport from C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/tpl/pages/crashReport.html
[ERROR] Cannot read properties of null (reading 'getEntityRefFieldTo') (TypeError)
[ERROR] TypeError: Cannot read properties of null (reading 'getEntityRefFieldTo')
at data_inst_EntityInstance.tidyLostSymmetricalEntityRefs (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:34540:16)
at data_inst_EntityInstance.tidyLostSymmetricalEntityRefs (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:34560:8)
at data_inst_FieldInstance.setEntityRefTo (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:36000:12)
at ui_vp_EntityRefPicker.vp.onPickValue (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:211178:9)
at ui_vp_EntityRefPicker.onPick (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:219289:8)
at ui_vp_EntityRefPicker.onPick (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:231962:35)
at ui_vp_EntityRefPicker.onMouseDown (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:219307:10)
at page_Editor.onMouseDown (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:180745:22)
at page_Editor.onHeapsEvent (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:180687:9)
at h2d_Scene.dispatchListeners (file:///C:/Users/Bennett/AppData/Local/Programs/ldtk/resources/app.asar/assets/js/renderer.js:95519:4)
[GENERAL]
#0 App
|--- #3 page.Editor
|--- #4 misc.FileWatcher
|--- #5 display.WorldRender
|--- #6 display.LevelRender
|--- #7 display.Camera
|--- #8 display.Rulers[--]
|--- #9 tool.SelectionTool[--]
|--- #10 tool.lt.DoNothing[--]
|--- #11 WorldTool
|--- #12 tool.PanView[--]
|--- #208 tool.lt.EntityTool[--]
|--- #626 display.EntityRender
|--- #627 display.EntityRender
|--- #628 display.EntityRender
|--- #629 display.EntityRender
|--- #630 display.EntityRender
|--- #631 display.EntityRender
|--- #632 display.EntityRender
|--- #633 display.EntityRender
|--- #634 ui.EntityInstanceEditor
|--- #635 tool.ResizeTool[--]
|--- #636 ui.vp.EntityRefPicker
|--- #637 page.CrashReport
[FILE] Cleared all file watches
Hi, Thanks for the detailed report, I'll fix that for 1.1.4 :)
Hi, I know it was long ago, but do you remember if by any chance you hit CTRL-Z to UNDO something during the process?
I don't remember, sorry
I could not reproduce nor locate the problem. Please feel free to re-open if the bug happens again.