Sandbox App is no longer an editor, Editor setup has moved to the editor project
This commit is contained in:
		| @ -1,8 +1,138 @@ | ||||
| #include <iostream> | ||||
| #include "../../BarinkEngine/src/BarinkEngine.h" | ||||
| #include "../../BarinkEngine/src/Scene/SceneManager.h" | ||||
| #include "../../BarinkEngine/src/Scene/SceneNodeTypes.h" | ||||
| #include "../../BarinkEngine/src/AssetManager/ModelImporter.h" | ||||
| #include "../../BarinkEngine/src/Graphics/Framebuffer.h" | ||||
| #include <imgui.h> | ||||
|  | ||||
| /* | ||||
| * Define globals | ||||
| */ | ||||
| Shader* shader; | ||||
|  | ||||
| int main()  | ||||
| char* code = new char[254]; | ||||
|  | ||||
| const std::string vertexShaderSource = "build/Debug/test.vs"; | ||||
| const std::string fragmentShaderSource = "build/Debug/test.fs"; | ||||
|  | ||||
| BarinkEngine::ModelImporter* MI = new BarinkEngine::ModelImporter(); | ||||
| Framebuffer* framebuffer; | ||||
| Scene* Level1; | ||||
| BarinkEngine::SceneObject* cube; | ||||
| /* | ||||
| * Runs once at startup | ||||
| * - USe to initialize the game/sandbox/demo | ||||
| */ | ||||
| void Start() { | ||||
|     // Build a basic test scene  | ||||
|     // NOTE: This will later be done through an editor  | ||||
|  | ||||
|     // Create a level and load it as the current level | ||||
|     std::string levelName("Test Level"); | ||||
|     Level1 = SceneManager::CreateScene(levelName); | ||||
|     SceneManager::LoadScene(*Level1); | ||||
|  | ||||
|     shader = new Shader(vertexShaderSource, fragmentShaderSource); | ||||
|  | ||||
|     // Create a cube node | ||||
|  | ||||
|     cube = MI->Import("build/Debug/Models/cube.obj"); | ||||
|     cube->renderable->material = new Material(*shader); | ||||
|     cube->renderable->material->Color = glm::vec3(1.0f, 0.0f, 0.0f); | ||||
|  | ||||
|     // What is in cube now ??     | ||||
|     std::cout << "mesh vertices: " << cube->renderable->mesh->vertices.size() << std::endl; | ||||
|     std::cout << "mesh elements: " << cube->renderable->mesh->elements.size() << std::endl; | ||||
|  | ||||
|     Level1->GetRoot().addChild(*cube); | ||||
|  | ||||
|     memset(code, '\0', 254); | ||||
|     framebuffer = new Framebuffer(); | ||||
|  | ||||
|     std::cout << "Colour attachment id; " << framebuffer->GetColourAttachment() << std::endl; | ||||
|     // TODO: Move to runtime/ Engine  | ||||
|     // NOTE: Submits should later be done through walking the sceneTree | ||||
|  | ||||
|     renderer.Submit(cube->renderable); | ||||
|  | ||||
| } | ||||
|  | ||||
| /* | ||||
| * Runs every frame | ||||
| * - Use to draw Immediate mode graphics (Not meant for HUD's ) | ||||
| */ | ||||
| void ImmediateGraphicsDraw() | ||||
| { | ||||
| 	std::cout << "Welcome to the Editor!" << std::endl; | ||||
|  | ||||
|     ImGui::DockSpaceOverViewport(ImGui::GetMainViewport()); | ||||
|       | ||||
|     // Show a menu bar | ||||
|     ImGui::BeginMainMenuBar(); | ||||
|  | ||||
|     if (ImGui::BeginMenu("Application")) { | ||||
|  | ||||
|  | ||||
|         if (ImGui::MenuItem("Exit")) { | ||||
|             // TODO: Exit application | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|         ImGui::EndMenu(); | ||||
|     } | ||||
|  | ||||
|     ImGui::EndMainMenuBar(); | ||||
|  | ||||
|  | ||||
|     // Show internal BarinkEngine stats | ||||
|     ShowStats(); | ||||
|  | ||||
|     ImGui::Begin("Viewport"); | ||||
|         ImGui::Image((void*)(intptr_t)framebuffer->GetColourAttachment(), ImVec2{ 800,600 }); | ||||
|     ImGui::End(); | ||||
|      | ||||
|     static float Zoom = 90; | ||||
|     static glm::vec3 Position = glm::vec3(0.0f, 0.0f, 0.0f); | ||||
|     static glm::vec3 Rotation = glm::vec3(0.0f, 0.0f, 0.0f); | ||||
|  | ||||
|     ImGui::Begin("Camera"); | ||||
|         ImGui::SliderFloat("Zoom", &Zoom, 10, 190); | ||||
|         ImGui::InputFloat3("Position:", &Position[0]); | ||||
|  | ||||
|         ImGui::InputFloat3("Rotation:", &Rotation[0]); | ||||
|     ImGui::End(); | ||||
|  | ||||
|     ImGui::Begin("Scripting"); | ||||
|         ImGui::Text("Lua Code"); | ||||
|         ImGui::InputTextMultiline("##", code, 255); | ||||
|         bool runCode = ImGui::Button("Run"); | ||||
|     ImGui::End(); | ||||
|  | ||||
|    ImGui::Begin("Scene Explorer"); | ||||
|    ImGui::End(); | ||||
|  | ||||
| } | ||||
|  | ||||
| /* | ||||
| * Runs every frame | ||||
| * - Meant for game logic ( non-physics related) | ||||
| */ | ||||
| void Update() | ||||
| { | ||||
|     // glBindFramebuffer(GL_FRAMEBUFFER, framebuffer->GetId()); | ||||
|  | ||||
|     renderer.Render(*framebuffer); | ||||
|  | ||||
|     //   glBindFramebuffer(GL_FRAMEBUFFER, 0); | ||||
| } | ||||
|  | ||||
| /* | ||||
| * Runs at the end of the program | ||||
| * - Meant for cleanup | ||||
| */ | ||||
| void Stop() | ||||
| { | ||||
|     delete framebuffer; | ||||
|     delete MI; | ||||
|     delete shader; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user