From 2a609940133049b6c45e3e8e5b1a401185458a8e Mon Sep 17 00:00:00 2001 From: maelstrom Date: Fri, 18 Jul 2025 23:44:13 +0200 Subject: [PATCH] fix(physics): joints were being created on load, leading to long load times --- core/src/objects/service/workspace.cpp | 9 +++++---- core/src/objects/service/workspace.h | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/src/objects/service/workspace.cpp b/core/src/objects/service/workspace.cpp index 38dba8e..de0d474 100644 --- a/core/src/objects/service/workspace.cpp +++ b/core/src/objects/service/workspace.cpp @@ -78,12 +78,13 @@ void Workspace::InitService() { // physicsWorld->setSleepAngularVelocity(5); physicsWorld->setEventListener(&physicsEventListener); +} - // Sync all parts +void Workspace::OnRun() { + // Make joints for (auto it = this->GetDescendantsStart(); it != this->GetDescendantsEnd(); it++) { - std::shared_ptr obj = *it; - if (!obj->IsA()) continue; - std::shared_ptr part = obj->CastTo().expect(); + if (!it->IsA()) continue; + std::shared_ptr part = it->CastTo().expect(); part->MakeJoints(); } diff --git a/core/src/objects/service/workspace.h b/core/src/objects/service/workspace.h index 4111680..6fa3bec 100644 --- a/core/src/objects/service/workspace.h +++ b/core/src/objects/service/workspace.h @@ -75,6 +75,7 @@ class DEF_INST_SERVICE_(explorer_icon="workspace") Workspace : public Service { void updatePartPhysics(std::shared_ptr part); protected: void InitService() override; + void OnRun() override; bool initialized = false; public: