diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 329a6ae..af8b807 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -3,8 +3,8 @@ { "name": "Linux", "includePath": [ - "${workspaceFolder}/DemoProject/include", - "${workspaceFolder}/DemoProject/src", + "${workspaceFolder}/TSE-RTS/include", + "${workspaceFolder}/TSE-RTS/src", "${workspaceFolder}/TSE/TSE_Base/include", "${workspaceFolder}/TSE/TSE_Base/src", "${workspaceFolder}/TSE/TSE_Core/include", diff --git a/TSE b/TSE index 236da30..2f3fdf8 160000 --- a/TSE +++ b/TSE @@ -1 +1 @@ -Subproject commit 236da3059ff43f1aff22a61ed827442a366e7529156346af47cafb74aa9545e7 +Subproject commit 2f3fdf83ae48f8eb638afbff2299a86a86e0b2d5fdf345ba35e1c4b1729de03a diff --git a/TSE-RTS/src/main.cpp b/TSE-RTS/src/main.cpp index b061f6e..8f8b216 100644 --- a/TSE-RTS/src/main.cpp +++ b/TSE-RTS/src/main.cpp @@ -15,66 +15,82 @@ #include "elements/Scene.hpp" #include "EditorSubsystem.hpp" +#define USE_EDITOR + using namespace TSE; using namespace TSE::GLFW; using namespace TSE::EDITOR; -int main(int argc, char** argv) +IWindow* wnd = nullptr; +DefaultRendererOpenGL* rend = nullptr; +Scene* currentScene = nullptr; +Layer* planeteryLayer = nullptr; +EditorSubsystem* editor; + +void SetupWindow() { - IWindow* wnd = new WindowGlfw("DemoProject", 600, 400, new OpenGLRenderingBackend(Color::aqua, false, 4, true)); - EditorSubsystem editor; - LoadBasicShaders(600, 400); - - DefaultRendererOpenGL rnd = DefaultRendererOpenGL(*BasicShader::Instance()); + Color backColor(0.0571f, 0.0819f, 0.1043f); +#ifdef USE_EDITOR + wnd = new WindowGlfw(PROJECT_NAME, 800, 600, new OpenGLRenderingBackend(backColor, false, 8, true), WindowType::Maximized); + editor = new EditorSubsystem(); +#else + wnd = new WindowGlfw(PROJECT_NAME, 800, 600, new OpenGLRenderingBackend(backColor, false, 8, false), WindowType::Maximized); +#endif + LoadBasicShaders(wnd->GetSize().x, wnd->GetSize().y); - #pragma region obj1 - - Transformable* obj1 = new Transformable("testObj"); - - RectBase rb = RectBase(); - obj1->AddBehaviourScript(&rb); - Material mat = Material("testMat", BasicShader::Instance()); - mat.SetValue("mainColor", Color::black); - Renderable r = Renderable(&mat); - obj1->AddBehaviourScript(&r); - obj1->position = Vector3(0,0,0); - obj1->scale = Vector3(8,1,1); + rend = new DefaultRendererOpenGL(*BasicShader::Instance()); + currentScene = new Scene(); - #pragma endregion - Layer game("game"); - - game.AddTransformable(obj1); - Scene scene; - scene.AddLayer(&game); - scene.AddLayer(&editor.editorLayer); +#ifdef USE_EDITOR + currentScene->AddLayer(&editor->editorLayer); + editor->hv.SetScene(currentScene); +#endif +} - //((Camera*)(editor.editorLayer.GetAllObjects()[0]->GetBehaviourScriptAt(0)))->SetRenderTarget(wnd); +void CleanUp() +{ +#ifdef USE_EDITOR + delete(editor); +#endif - editor.hv.SetScene(&scene); + UnLoadBasicShaders(); +} +void GameLoop() +{ while(!wnd->ShouldClose()) { wnd->Clear(); - rnd.Begin(); + rend->Begin(); - scene.Render(rnd, *wnd); + if(currentScene != nullptr) + currentScene->Render(*rend, *wnd); - rnd.End(); - rnd.Flush(); + rend->End(); + rend->Flush(); - scene.DoneRender(); + if(currentScene != nullptr) + currentScene->DoneRender(); - //editor.sv.Render(); - editor.controller.Update(); - //ImGui::ShowDemoWindow(); +#ifdef USE_EDITOR + editor->controller.Update(); +#endif wnd->Update(); - scene.Update(); + if(currentScene != nullptr) + currentScene->Update(); } - UnLoadBasicShaders(); - Transformable::DeleteAll(); - +} + + +int main(int argc, char** argv) +{ + SetupWindow(); + + GameLoop(); + + CleanUp(); return 0; }