From 88ece5b450aae4567b29e0a1ff7401efa6cb8f70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20=C5=A0toura=C4=8D?= <525032@mail.muni.cz>
Date: Thu, 18 May 2023 19:22:55 +0200
Subject: [PATCH] simulator using only scene, cleaned up constructor

---
 src/studio/include/studio/simulator.hpp |  3 ---
 src/studio/src/simulator.cpp            | 32 +++++++++++--------------
 2 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/src/studio/include/studio/simulator.hpp b/src/studio/include/studio/simulator.hpp
index 6ee10e3..1bb0fda 100644
--- a/src/studio/include/studio/simulator.hpp
+++ b/src/studio/include/studio/simulator.hpp
@@ -64,9 +64,6 @@ private:
     std::vector<cam_control_ptr> cam_controls;
 
     /* SCENE */
-    std::vector<object_ptr> objects;
-    std::vector<frame_ptr> obj_frames;
-    
     std::vector<node_ptr> scene;
     node_ptr selection;
 
diff --git a/src/studio/src/simulator.cpp b/src/studio/src/simulator.cpp
index 16bb09f..6c78bdc 100644
--- a/src/studio/src/simulator.cpp
+++ b/src/studio/src/simulator.cpp
@@ -116,17 +116,9 @@ Simulator::Simulator()
                                                  "./data/shaders/lightshader.frag")},
                 {"basic", std::make_shared<Shader>("./data/shaders/basicshader.vert",
                                                    "./data/shaders/basicshader.frag")}}
-    , cam_controls{std::make_shared<CameraController>()}
-    , objects{std::make_shared<Object>(lit_cube_vertices, lit_cube_indices, lit_cube_normals),
-              std::make_shared<Object>(lit_cube_vertices, lit_cube_indices, lit_cube_normals, glm::vec3(1.0f, 1.0f, 1.0f))}
-    , obj_frames{std::make_shared<Frame>(),
-                 std::make_shared<Frame>(glm::vec3(1.2f, 2.0f, 2.0f ))}
     , obj_controls{std::make_shared<ObjectController>()}
+    , cam_controls{std::make_shared<CameraController>()}
 {
-    /* SET LIGHT CUBE SHADER AND SIZE */
-    objects[1]->setShaderType("basic");
-    obj_frames[1]->setScale(glm::vec3(0.1f, 0.1f, 0.1f));
-
     create_scene();
     find_cameras(scene);
     find_lights(scene);
@@ -225,11 +217,19 @@ void Simulator::find_cameras(const std::vector<node_ptr> &scene)
 
 void Simulator::create_scene()
 {
-    for (std::size_t i = 0; i < objects.size(); ++i)
-    {
-        scene.emplace_back(std::make_shared<Node>(obj_frames[i]));
-        scene[i]->addObject(objects[i]);
-    }
+    /* ADD DEFAULT CUBE */
+    scene.emplace_back(std::make_shared<Node>(std::make_shared<Frame>(Frame{})));
+    scene.back()->addObject(std::make_shared<Object>(lit_cube_vertices, lit_cube_indices, lit_cube_normals));
+
+    /* ADD LIGHT CUBE AND ITS LIGHT */
+    scene.emplace_back(std::make_shared<Node>(std::make_shared<Frame>(Frame{glm::vec3(1.2f, 2.0f, 2.0f)})));
+    scene.back()->addObject(std::make_shared<Object>(lit_cube_vertices, 
+                                                     lit_cube_indices, 
+                                                     lit_cube_normals, 
+                                                     glm::vec3(1.0f, 1.0f, 1.0f), 
+                                                     "basic"));
+    scene.back()->getFrame()->setScale(glm::vec3(0.1f, 0.1f, 0.1f));
+    scene.back()->addObject(std::make_shared<Light>(glm::vec3(1.0f, 1.0f, 1.0f), scene.back()->getFrame()));
 
     /* ADD GRID */
     scene.emplace_back(std::make_shared<Node>(std::make_shared<Frame>(glm::vec3(0, 0, 0))));
@@ -241,10 +241,6 @@ void Simulator::create_scene()
     grid->setDrawMode(GL_LINES);                                            
     scene.back()->addObject(std::move(grid));
 
-    /* ADD LIGHT */
-    scene.emplace_back(std::make_shared<Node>(obj_frames[1]));
-    scene.back()->addObject(std::make_shared<Light>(glm::vec3(1.0f, 1.0f, 1.0f), scene.back()->getFrame()));
-
     /* ADD CAMERA */
     scene.emplace_back(std::make_shared<Node>(std::make_shared<Frame>(glm::vec3(0.0f, 1.0f, 6.0f))));
     scene.back()->addObject(std::make_shared<Camera>(60.0f, scene.back()->getFrame()));
-- 
GitLab