Open Swivelgames opened 2 weeks ago
Here's a quick screenshot that I was able to grab when just trying to click on the block. This seems to happen regardless of whether or not I'm tapping on a Cyclops block, or any other object in my scene. You'll need to zoom in, but that's definitely a Visual Selection, even though I'm just clicking and not click-dragging.
Also, here's the logs from that test that show some different errors than we were getting before:
Unfortunately, the .cpp errors are hard to debug because they do not offer any clue as to what it is that is causing the error. I have fixed the triangulation error in a patch that I'm working on, but I've been working on it for months now and don't know when I'm going to be able to check it in.
My guess is that one of your blocks has no data in it. Try deleting all the CyclopsBlocks in the scene and then create a new cube using the bottom panel.
Yeah, I hear you. The cpp errors are not very helpful...
Unfortunately, this issue is reproducible with a fresh project and a fresh CyclopsBlock.
I'm able to reproduce this consistently by reverting the project back to its pre-Cyclops state, running through the setup steps again, and adding an initial CyclopsBlock.
Even after adding additional blocks and using the Cyclops Editor to add additional block features, outside of the Cyclops editor, clicking doesn't work, and clicking-dragging crashes Godot.
I've been able to reproduce the issue in the following scenarios:
It seems that Cyclops is taking over the built-in editor and conflicting with the click/visual-selection functionality.
I pulled down the repo and will continue to investigate! :heart:
I'm not sure what to say since it works on my machine. Does the same thing happen in a blank project? Perhaps it's due to a name clash with something in another part of your project.
Currently in the process of tracking it down. I've actually started knocking out a bunch of the cpp errors one by one! I've got Stand Up in a few minutes, so I can't give a full update, but I'll give a rundown of what I've done so far when I get the chance!
I'll also push up the project I'm working in to hopefully make it easier to reproduce, but we'll see! :sweat_smile:
In the meantime, here's a more refined set of reproduction steps:
Result: Godot crashes
I just merged a branch I've been working on for a few months now. You might want to check out the latest dev version and see if it is causing the same issues.
How are you selecting it? The CyclopsBlock should be unselectable by the regular Godot tool, and the Cyclops move tool will only be available if at least one CyclopsBlock is selected.
Latest main branch is working much more smoothly! No more crashes, and Viewport visual selection of other objects works without crashing again. Though, the first Cyclops tool defaults to "on" by default and has to be manually deselected. But that's not a major gripe.
As for the CPP errors, they seem to be more frequent with the version in the main branch. I'll continue tracking them down with the latest from the main branch and see if I can push up a PR that resolves them. :tada:
Most of them just have to do with attempting to iterate on or call methods for empty arrays or null values. Which, on its surface doesn't necessarily harm anything, but definitely adds to the instability I was facing. I noticed that as I started knocking those errors out, stability started to improve :+1:
@blackears How are you selecting it?
In the meantime, here's a more refined set of reproduction steps:
1. Open default scene in your project (without any Cyclops blocks)
2. Create a fresh new Cyclops Block
+ 3. Select it in the node list
4. Deselect it
5. Attempt to visual select anything in the standard Viewport
Result: Godot crashes
@blackears The CyclopsBlock should be unselectable by the regular Godot tool
Yeah, that's kind of a bummer, but I imagine there's limitations! :sweat_smile:
First time using Cyclops Level Builder. It's very intriguing! But it seems to get into a buggy state that results in a crash whenever I use it.
Problem
Cyclops Blocks are not selectable in the Viewport. Attempting to Visual Select the block crashes Godot completely.
Reproduction Steps
Result
Observations I first noticed this when attempting to visually select something in the viewport. It seems that you can't visually select anything in the viewport anymore.
When I was playing around with this during reproduction, I noticed that simply trying to click on a Cyclops Block seemed to trigger the Visual Selection. It was subtle, since I wasn't clicking-dragging, but just tapping within the viewport seems to trigger Visual Selection, which is weird. Even when I wasn't in Cyclops mode, when I tapped in the viewport (without a Cyclops block selected), I noticed the yellow Cyclops dot briefly appear where I clicked. That might be a place to look!
I also noticed a number of errors in the logs that suggests there are some concerning errors being thrown in the GDScripts. None of these errors show in the version of the project right before adding Cyclops. :thinking:
Screenshot
Logs
Expand below to see the Full Log
Expand to see the entire log (Lots of errors!)
```python Godot Engine v4.3.stable.arch_linux - https://godotengine.org Vulkan 1.3.293 - Forward+ - Using Device #0: AMD - AMD Radeon RX 6750 XT ERROR: Condition "array_len == 0" is true. Returning: ERR_INVALID_DATA at: mesh_create_surface_data_from_arrays (servers/rendering_server.cpp:1195) ERROR: Condition "err != OK" is true. at: add_surface_from_arrays (scene/resources/mesh.cpp:1810) ERROR: Condition "array_len == 0" is true. Returning: ERR_INVALID_DATA at: mesh_create_surface_data_from_arrays (servers/rendering_server.cpp:1195) ERROR: Condition "err != OK" is true. at: add_surface_from_arrays (scene/resources/mesh.cpp:1810) ERROR: Can't take value from empty array. at: back (core/variant/array.cpp:340) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) ERROR: Condition "det == 0" is true. at: invert (core/math/basis.cpp:47) ERROR: Condition "det == 0" is true. at: affine_invert (core/math/transform_2d.cpp:51) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) SCRIPT ERROR: Assertion failed: failed to add point in triangulation at: trianglate_face_vertex_indices (res://addons/cyclops_level_builder/math/math_util.gd:203) ERROR: Condition "!is_ancestor_of(p_start_node)" is true. Returning: p_start_node at: get_deepest_editable_node (scene/main/node.cpp:2525) ERROR: Condition "!is_ancestor_of(p_node)" is true. Returning: false at: is_editable_instance (scene/main/node.cpp:2518) ================================================================ handle_crash: Program crashed with signal 11 Engine version: Godot Engine v4.3.stable.arch_linux Dumping the backtrace. Please include this when reporting the bug to the project developer. [1] /usr/lib/libc.so.6(+0x411d0) [0x7354f57411d0] (??:0) [2] godot(+0x26a4deb) [0x5ecfc59cbdeb] (??:?) [3] godot(+0x26a8e9f) [0x5ecfc59cfe9f] (??:?) [4] godot(+0x26d7c9f) [0x5ecfc59fec9f] (??:?) [5] godot(+0x556beb2) [0x5ecfc8892eb2] (??:?) [6] godot(+0x32a61f4) [0x5ecfc65cd1f4] (??:?) [7] godot(+0x3184370) [0x5ecfc64ab370] (??:?) [8] godot(+0x31dba30) [0x5ecfc6502a30] (??:?) [9] godot(+0x31df948) [0x5ecfc6506948] (??:?) [10] godot(+0x32000df) [0x5ecfc65270df] (??:?) [11] godot(+0x5d4d08d) [0x5ecfc907408d] (??:?) [12] godot(+0xed2f82) [0x5ecfc41f9f82] (??:?) [13] godot(+0x51ea460) [0x5ecfc8511460] (??:?) [14] godot(+0x51ec6a0) [0x5ecfc85136a0] (??:?) [15] godot(+0xed6414) [0x5ecfc41fd414] (??:?) [16] godot(+0xe1391c) [0x5ecfc413a91c] (??:?) [17] /usr/lib/libc.so.6(+0x29e08) [0x7354f5729e08] (??:0) [18] /usr/lib/libc.so.6(__libc_start_main+0x8c) [0x7354f5729ecc] (??:0) [19] godot(+0xe36b85) [0x5ecfc415db85] (??:?) -- END OF BACKTRACE -- ================================================================ [1] 416037 IOT instruction (core dumped) godot -e ```