Load meshes immediately

This commit is contained in:
2026-04-01 20:11:43 +03:00
parent c31892ac05
commit bcf9291c03

View File

@@ -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<TransformComponent>()) {
auto& transform = entity.get_mut<TransformComponent>();
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<RenderableComponent>(renderable);
}