From bcf9291c036f841c859e96e220dfce23c9018419 Mon Sep 17 00:00:00 2001 From: Sergey Lapin Date: Wed, 1 Apr 2026 20:11:43 +0300 Subject: [PATCH] Load meshes immediately --- .../editScene/systems/SceneSerializer.cpp | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/features/editScene/systems/SceneSerializer.cpp b/src/features/editScene/systems/SceneSerializer.cpp index f8f2ad0..46ab8a7 100644 --- a/src/features/editScene/systems/SceneSerializer.cpp +++ b/src/features/editScene/systems/SceneSerializer.cpp @@ -271,10 +271,26 @@ void SceneSerializer::deserializeRenderable(flecs::entity entity, const nlohmann RenderableComponent renderable; renderable.meshName = json.value("meshName", ""); renderable.visible = json.value("visible", true); - - // Don't create the Ogre::Entity here - it will be created when mesh is loaded renderable.entity = nullptr; + // Load the mesh immediately if mesh name is provided + if (!renderable.meshName.empty() && entity.has()) { + auto& transform = entity.get_mut(); + if (transform.node) { + try { + renderable.entity = m_sceneMgr->createEntity(renderable.meshName); + transform.node->attachObject(renderable.entity); + renderable.entity->setVisible(renderable.visible); + } catch (const Ogre::Exception& e) { + // Mesh not found - entity will be created but without mesh + // User can load mesh manually later + Ogre::LogManager::getSingleton().logMessage( + "Warning: Failed to load mesh '" + renderable.meshName + + "' for entity: " + e.getDescription()); + } + } + } + entity.set(renderable); }