vengi-voxel / vengi

free and open source voxel art tools - editor, thumbnailer and format converter
http://vengi-voxel.github.io/vengi/
Other
1.08k stars 90 forks source link

VOXELFORMAT: moving a parent node as a new child in the scene graph panel triggers an assert #238

Closed mgerhardy closed 1 year ago

mgerhardy commented 1 year ago
- parentnode
  |-> childnode

Moving parentnode as a new child node into childnode triggers an assert The result after the move should be like this:

- childnode
  |-> parentnode
mgerhardy commented 1 year ago
ERROR: (0) Stack trace (most recent call last):
ERROR: (0) #19   Object "", at 0xffffffffffffffff, in 
ERROR: (0) #18   Object "/home/mgerhardy/dev/engine/build/Debug/voxedit/vengi-voxedit", at 0x55dd24118550, in _start
ERROR: (0) #17   Source "../csu/libc-start.c", line 381, in __libc_start_main_impl
ERROR: (0) #16   Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main
ERROR: (0) #15   Source "/home/mgerhardy/dev/engine/src/tools/voxedit/VoxEdit.cpp", line 366, in main
ERROR: (0)         363:     const io::FilesystemPtr& filesystem = core::make_shared<io::Filesystem>();
ERROR: (0)         364:     const core::TimeProviderPtr& timeProvider = std::make_shared<core::TimeProvider>();
ERROR: (0)         365:     VoxEdit app(filesystem, timeProvider);
ERROR: (0)       > 366:     return app.startMainLoop(argc, argv);
ERROR: (0)         367: }
ERROR: (0) #14   Source "/home/mgerhardy/dev/engine/src/modules/app/App.cpp", line 105, in startMainLoop
ERROR: (0)         102:     emscripten_set_main_loop(runFrameEmscripten, 0, 1);
ERROR: (0)         103: #else
ERROR: (0)         104:     while (AppState::InvalidAppState != _curState) {
ERROR: (0)       > 105:         onFrame();
ERROR: (0)         106:     }
ERROR: (0)         107: #endif
ERROR: (0)         108:     return _exitCode;
ERROR: (0) #13   Source "/home/mgerhardy/dev/engine/src/modules/app/App.cpp", line 181, in onFrame
ERROR: (0)         178:                 core_trace_scoped(AppOnBeforeRunning);
ERROR: (0)         179:                 onBeforeRunning();
ERROR: (0)         180:             }
ERROR: (0)       > 181:             const AppState state = onRunning();
ERROR: (0)         182:             if (_nextState != AppState::Cleanup && _nextState != AppState::Destroy) {
ERROR: (0)         183:                 _nextState = state;
ERROR: (0)         184:             }
ERROR: (0) #12   Source "/home/mgerhardy/dev/engine/src/tools/voxedit/VoxEdit.cpp", line 345, in onRunning
ERROR: (0)         342: }
ERROR: (0)         343: 
ERROR: (0)         344: app::AppState VoxEdit::onRunning() {
ERROR: (0)       > 345:     app::AppState state = Super::onRunning();
ERROR: (0)         346:     if (state != app::AppState::Running) {
ERROR: (0)         347:         return state;
ERROR: (0)         348:     }
ERROR: (0) #11   Source "/home/mgerhardy/dev/engine/src/modules/ui/IMGUIApp.cpp", line 364, in onRunning
ERROR: (0)         361:     const bool renderUI = _renderUI->boolVal();
ERROR: (0)         362:     if (renderUI) {
ERROR: (0)         363:         core_trace_scoped(IMGUIAppOnRenderUI);
ERROR: (0)       > 364:         onRenderUI();
ERROR: (0)         365:         if (_console.isActive()) {
ERROR: (0)         366:             if (ImGui::IsPopupOpen(0u, ImGuiPopupFlags_AnyPopupId)) {
ERROR: (0)         367:                 _console.toggle();
ERROR: (0) #10   Source "/home/mgerhardy/dev/engine/src/tools/voxedit/VoxEdit.cpp", line 341, in onRenderUI
ERROR: (0)         338:     if (voxedit::sceneMgr().update(_nowSeconds)) {
ERROR: (0)         339:         _mainWindow->resetCamera();
ERROR: (0)         340:     }
ERROR: (0)       > 341:     _mainWindow->update();
ERROR: (0)         342: }
ERROR: (0)         343: 
ERROR: (0)         344: app::AppState VoxEdit::onRunning() {
ERROR: (0) #9    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/MainWindow.cpp", line 558, in update
ERROR: (0)         555:     ImGui::DockSpace(dockIdMain);
ERROR: (0)         556: 
ERROR: (0)         557:     leftWidget();
ERROR: (0)       > 558:     mainWidget();
ERROR: (0)         559:     rightWidget();
ERROR: (0)         560: 
ERROR: (0)         561:     registerPopups();
ERROR: (0) #8    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/MainWindow.cpp", line 254, in mainWidget
ERROR: (0)         251:         _lastHoveredScene = scene;
ERROR: (0)         252:     }
ERROR: (0)         253:     for (size_t i = 0; i < _scenes.size(); ++i) {
ERROR: (0)       > 254:         _scenes[i]->update(&_lastExecutedCommand);
ERROR: (0)         255:     }
ERROR: (0)         256: 
ERROR: (0)         257:     // bottom
ERROR: (0) #7    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/Viewport.cpp", line 380, in update
ERROR: (0)         377:     }
ERROR: (0)         378:     if (ImGui::Begin(name.c_str(), nullptr, sceneWindowFlags)) {
ERROR: (0)         379:         renderMenuBar(listener);
ERROR: (0)       > 380:         renderViewport();
ERROR: (0)         381:     }
ERROR: (0)         382:     ImGui::End();
ERROR: (0) #6    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/Viewport.cpp", line 235, in renderViewport
ERROR: (0)         233:         renderToFrameBuffer();
ERROR: (0)         234:         renderViewportImage(contentSize);
ERROR: (0)       > 235:         const bool modifiedRegion = renderGizmo(camera(), headerSize, contentSize);
ERROR: (0)         236: 
ERROR: (0)         237:         if (sceneMgr().isLoading()) {
ERROR: (0)         238:             const float radius = ImGui::GetFontSize() * 12.0f;
ERROR: (0) #5    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/Viewport.cpp", line 614, in renderGizmo
ERROR: (0)         611:     ImGuizmo::SetDrawlist();
ERROR: (0)         612:     ImGuizmo::SetRect(windowPos.x, windowPos.y + headerSize, size.x, size.y);
ERROR: (0)         613:     ImGuizmo::SetOrthographic(orthographic);
ERROR: (0)       > 614:     const bool modified = renderSceneAndModelGizmo(camera);
ERROR: (0)         615:     renderCameraManipulator(camera, headerSize);
ERROR: (0)         616:     return modified;
ERROR: (0)         617: }
ERROR: (0) #4    Source "/home/mgerhardy/dev/engine/src/tools/voxedit/modules/voxedit-ui/Viewport.cpp", line 523, in renderSceneAndModelGizmo
ERROR: (0)         520:             operation |= ImGuizmo::ROTATE;
ERROR: (0)         521:         }
ERROR: (0)         522:         const voxelformat::SceneGraphTransform &transform = node.transform(keyFrameIdx);
ERROR: (0)       > 523:         localMatrix = transform.localMatrix();
ERROR: (0)         524:         const glm::vec3 mins = -transform.pivot() * size;
ERROR: (0)         525:         if (glm::any(glm::epsilonNotEqual(mins, _bounds.mins, glm::epsilon<float>()))) {
ERROR: (0)         526:             _bounds.mins = mins;
ERROR: (0) #3    Source "/home/mgerhardy/dev/engine/src/modules/voxelformat/SceneGraphNode.cpp", line 149, in localMatrix
ERROR: (0)         146: }
ERROR: (0)         147: 
ERROR: (0)         148: const glm::mat4x4 &SceneGraphTransform::localMatrix() const {
ERROR: (0)       > 149:     core_assert_msg((_dirty & DIRTY_LOCALVALUES) == 0u, "dirty flag: %u", _dirty);
ERROR: (0)         150:     return _localMat;
ERROR: (0)         151: }
ERROR: (0) #2    Source "/home/mgerhardy/dev/engine/src/modules/core/Assert.cpp", line 17, in core_stacktrace
ERROR: (0)          14: #ifdef HAVE_BACKWARD
ERROR: (0)          15:     std::ostringstream os;
ERROR: (0)          16:     backward::StackTrace st;
ERROR: (0)       >  17:     st.load_here(32);
ERROR: (0)          18:     backward::Printer printer;
ERROR: (0)          19:     printer.print(st, os);
ERROR: (0)          20:     std::string stacktrace = os.str();
ERROR: (0) #1    Source "/home/mgerhardy/dev/engine/contrib/libs/backward/backward.h", line 878, in load_here
ERROR: (0)         875:       return 0;
ERROR: (0)         876:     }
ERROR: (0)         877:     _stacktrace.resize(depth);
ERROR: (0)       > 878:     size_t trace_cnt = details::unwind(callback(*this), depth);
ERROR: (0)         879:     _stacktrace.resize(trace_cnt);
ERROR: (0)         880:     skip_n_firsts(0);
ERROR: (0)         881:     return size();
ERROR: (0) #0    Source "/home/mgerhardy/dev/engine/contrib/libs/backward/backward.h", line 860, in unwind<backward::StackTraceImpl<backward::system_tag::linux_tag>::callback>
ERROR: (0)         858: template <typename F> size_t unwind(F f, size_t depth) {
ERROR: (0)         859:   Unwinder<F> unwinder;
ERROR: (0)       > 860:   return unwinder(f, depth);
ERROR: (0)         861: }
ERROR: (0)         862: 
ERROR: (0)         863: } // namespace details
WARN: 

Assertion failure at localMatrix (/home/mgerhardy/dev/engine/src/modules/voxelformat/SceneGraphNode.cpp:149), triggered 1 time:
  'dirty flag: 2'