tksuoran/erhe

Deleting node with mesh triggers Jolt assert

Closed this issue · 1 comments

 	editor.exe!JPH::BodyInterface::ActivateBody(const JPH::BodyID & inBodyID={...}) Line 174	C++
 	editor.exe!erhe::physics::Jolt_rigid_body::set_motion_mode(erhe::physics::Motion_mode motion_mode=e_dynamic) Line 273	C++
 	editor.exe!editor::Transform_tool::release_node_physics() Line 610	C++
 	editor.exe!editor::Transform_tool::update_target_nodes(erhe::scene::Node * node_filter=0x0000000000000000) Line 299	C++
 	editor.exe!editor::Transform_tool::on_message(editor::Editor_message & message={...}) Line 200	C++
 	editor.exe!editor::Transform_tool::{ctor}::__l2::<lambda_1>::operator()(editor::Editor_message & message={...}) Line 178	C++
 	[External Code]	
 	editor.exe!erhe::message_bus::Message_bus<editor::Editor_message>::send_message(editor::Editor_message message={...}) Line 25	C++
 	editor.exe!editor::Selection::send_selection_change_message() Line 694	C++
 	editor.exe!editor::Selection::set_selection(const std::vector<std::shared_ptr<erhe::scene::Item>,std::allocator<std::shared_ptr<erhe::scene::Item>>> & selection={...}) Line 426	C++
 	editor.exe!editor::Node_insert_remove_operation::execute(editor::Editor_context & context={...}) Line 112	C++
 	editor.exe!editor::Compound_operation::execute(editor::Editor_context & context={...}) Line 25	C++
 	editor.exe!editor::Operation_stack::push(const std::shared_ptr<editor::IOperation> & operation={...}) Line 87	C++
 	editor.exe!editor::Selection::delete_selection() Line 369	C++
 	editor.exe!editor::Selection_delete_command::try_call() Line 259	C++
 	editor.exe!erhe::commands::Command::try_call_with_input(erhe::commands::Input_arguments & input={...}) Line 77	C++
 	editor.exe!erhe::commands::Key_binding::on_key(erhe::commands::Input_arguments & input={...}, bool pressed=true, int code=0x00000105, unsigned int modifier_mask=0x00000000) Line 68	C++
 	editor.exe!erhe::commands::Commands::on_key(int code=0x00000105, unsigned int modifier_mask=0x00000000, bool pressed=true) Line 296	C++
 	editor.exe!erhe::toolkit::Root_window_event_handler::on_key(int code=0x00000105, unsigned int mask=0x00000000, bool pressed=true) Line 260	C++
 	editor.exe!erhe::toolkit::`anonymous namespace'::key_event_callback(GLFWwindow * glfw_window=0x000001e28f46ab10, const int key=0x00000105, const int scancode=0x00000153, const int action=0x00000001, int glfw_modifiers=0x00000000) Line 271	C++
 	editor.exe!_glfwInputKey(_GLFWwindow * window=0x000001e28f46ab10, int key=0x00000105, int scancode=0x00000153, int action=0x00000001, int mods=0x00000000) Line 276	C
 	editor.exe!windowProc(HWND__ * hWnd=0x0000000000010ba6, unsigned int uMsg=0x00000100, unsigned __int64 wParam=0x000000000000002e, __int64 lParam=0x0000000001530001) Line 827	C
 	[External Code]	
 	editor.exe!_glfwPlatformPollEvents() Line 2055	C
 	editor.exe!_glfwPlatformWaitEventsTimeout(double timeout=0.0099999997764825821) Line 2123	C
 	editor.exe!glfwWaitEventsTimeout(double timeout=0.0099999997764825821) Line 1094	C
 	editor.exe!erhe::toolkit::Context_window::poll_events() Line 570	C++
 	editor.exe!editor::Editor::run() Line 369	C++
 	editor.exe!editor::run_editor() Line 519	C++
 	editor.exe!main(int __formal=0x00000001, char * * __formal=0x000001e2fb36f9d0) Line 6	C++
 	[External Code]	

  • Transform_tool::release_node_physics() incorrectly assumes if Node_physics is found, it can be actually used.
  • When Node_physics is "detached" from a Scene by Node_insert_remove_operation::execute(), the Node becomes orphan (no parent), and in that case the Node_physics is not in any physics world