diff --git a/src/inferno/scene/scene.cpp b/src/inferno/scene/scene.cpp index 3f8baf0..a276a81 100644 --- a/src/inferno/scene/scene.cpp +++ b/src/inferno/scene/scene.cpp @@ -40,18 +40,14 @@ void Scene::initialize() ScriptSystem::the().setScene(this); TextAreaSystem::the().setScene(this); - // Load assets - // --------------------------------- - - m_texture = TextureManager::the().load("assets/gfx/test.png"); - m_texture2 = TextureManager::the().load("assets/gfx/test-inverted.png"); - // Load scene .json // ------------------------------------- auto sceneJson = ruc::Json::parse(ruc::File("assets/scene/scene1.json").data()); - VERIFY(sceneJson.exists("camera"), "scene doesnt contain a camera"); + // Camera + + VERIFY(sceneJson.exists("camera"), "scene doesnt contain a camera"); auto& cameraJson = sceneJson.at("camera"); uint32_t camera = loadEntity(cameraJson); @@ -73,21 +69,19 @@ void Scene::initialize() } } - // Construct entities - // --------------------------------- - - uint32_t quad = createEntity("Quad"); - addComponent(quad, glm::vec4 { 1.0f, 1.0f, 1.0f, 1.0f }, m_texture); + // Quads - uint32_t quad2 = createEntity("Quad 2"); - auto& quad2Transform = getComponent(quad2); - quad2Transform.translate.x = 1.1f; - addComponent(quad2, glm::vec4 { 0.5f, 0.6f, 0.8f, 1.0f }, m_texture); + if (sceneJson.exists("quad") && sceneJson.at("quad").type() == ruc::Json::Type::Array) { + auto& quads = sceneJson.at("quad").asArray().elements(); + for (const auto& quad : quads) { + uint32_t quadEntity = loadEntity(quad); + addComponent(quadEntity); + auto& spriteComponent = getComponent(quadEntity); + quad.getTo(spriteComponent); + } + } - uint32_t quad3 = createEntity("Quad 3"); - auto& quad3Transform = getComponent(quad3); - quad3Transform.translate.x = 2.2f; - addComponent(quad3, glm::vec4 { 1.0f, 1.0f, 1.0f, 1.0f }, m_texture2); + // Text uint32_t text = createEntity("Text"); addComponent(text, "HelloWorld!", "assets/fnt/dejavu-sans", 0, 150, 3);