#pragma once #include "../../YoggieEngine/src/BarinkEngine.h" #include "../../YoggieEngine/src/AssetManager/ModelImporter.h" #include "../../YoggieEngine/src/Graphics/Memory/Framebuffer.h" #include "../../YoggieEngine/src/PerfCounter.cpp" #include "../../YoggieEngine/src/Scene/Entity.h" #include "Project.h" class SceneRuntime : public ApplicationRuntime { public: SceneRuntime() = default; void Start() override { CurrentProject = std::make_shared("Random"); framebuffer = new Framebuffer(); // Create a level and load it as the current level auto importer = ModelImporter(); // Create a cube Model = importer.Import("build/Debug/Models/Cube.obj"); cube = MainScene.AddEntity("cube"); auto& render3DComponent = cube.AddComponent(); render3DComponent.mesh = *(Model->renderable->mesh); cube.GetComponent().Position = glm::vec3(1.0f, 0.0f, 5.0f); auto cube2 = MainScene.AddEntity("Cube1"); auto& rendercube2 = cube2.AddComponent(); rendercube2.mesh = *(Model->renderable->mesh); // create an ambient light source auto AmbientLight = MainScene.AddEntity("AmbientLight"); auto light = AmbientLight.AddComponent(); light.Color = glm::vec3(1.0f); light.Strength = 1.0f; Selected = (entt::entity)-1; } void Update() override { } void FixedUpdate() override { } void Stop() override { } private: std::shared_ptr CurrentProject = nullptr; Scene MainScene; Framebuffer* framebuffer; SceneObject* Model; Entity cube; entt::entity Selected; friend class Editor; };