diff --git a/BarinkEngine/src/AssetManager/ModelImporter.h b/BarinkEngine/src/AssetManager/ModelImporter.h index 0234fc1..afae7ae 100644 --- a/BarinkEngine/src/AssetManager/ModelImporter.h +++ b/BarinkEngine/src/AssetManager/ModelImporter.h @@ -10,7 +10,7 @@ #include #include #include -#include "../Scene/SceneNodeTypes.h" +#include "../Scene/TransformTree/SceneNodeTypes.h" void ProcessVertices(aiMesh* mesh, std::vector& out_vertices); diff --git a/BarinkEngine/src/BarinkEngine.cpp b/BarinkEngine/src/BarinkEngine.cpp index e211297..70ae3b5 100644 --- a/BarinkEngine/src/BarinkEngine.cpp +++ b/BarinkEngine/src/BarinkEngine.cpp @@ -6,35 +6,26 @@ int main(int argc, char* argv[]) { // Setup performance sampler PerfomanceSamplerInit(); - // Startup services BarinkWindow MainWindow = BarinkWindow(800, 600); renderer = BarinkEngine::Renderer(); InputSystem = BarinkEngine::InputManager(); ES = EngineStatistics(); - InputSystem.attach(&MainWindow); GUIManager GUISystem = GUIManager(&MainWindow); - glEnable(GL_DEPTH_TEST); - - // First call to setup game Start(); - - // Runtime loop while (!MainWindow.WindowShouldClose()) { - SamplePerformance(); - // Execute main logic InputSystem.PollEvents(); @@ -47,11 +38,9 @@ int main(int argc, char* argv[]) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } - // Shutdown game Stop(); - // Shutdown Services return 0; diff --git a/BarinkEngine/src/BarinkEngine.h b/BarinkEngine/src/BarinkEngine.h index c5d87cd..63f190b 100644 --- a/BarinkEngine/src/BarinkEngine.h +++ b/BarinkEngine/src/BarinkEngine.h @@ -1,8 +1,8 @@ #pragma once #include "glm/glm.hpp" -#include "graphics/Shader.h" +#include "graphics/Primitives/Shader.h" #include "Platform/Window.h" -#include "graphics/Texture.h" +#include "graphics/Primitives/Texture.h" #include "graphics/Primitives/Camera.h" #include "graphics/Renderable.h" #include "Graphics/Renderer.h" @@ -13,7 +13,7 @@ #include "Input/InputManager.h" #include "Graphics/Renderer.h" #include "GUI/GUIManager.h" -#include "Scene.h" +#include "Scene/Scene.h" #include "PerfCounter.h" diff --git a/BarinkEngine/src/Graphics/GPUBucket.h b/BarinkEngine/src/Graphics/GPUBucket.h index e4fc74e..562fb2b 100644 --- a/BarinkEngine/src/Graphics/GPUBucket.h +++ b/BarinkEngine/src/Graphics/GPUBucket.h @@ -1,6 +1,6 @@ #pragma once -#include "VertexArray.h" -#include "Buffer.h" +#include "Memory/VertexArray.h" +#include "Memory/Buffer.h" #include "Primitives/Mesh.h" #include "Primitives/Material.h" #include diff --git a/BarinkEngine/src/Graphics/Buffer.cpp b/BarinkEngine/src/Graphics/Memory/Buffer.cpp similarity index 100% rename from BarinkEngine/src/Graphics/Buffer.cpp rename to BarinkEngine/src/Graphics/Memory/Buffer.cpp diff --git a/BarinkEngine/src/Graphics/Buffer.h b/BarinkEngine/src/Graphics/Memory/Buffer.h similarity index 100% rename from BarinkEngine/src/Graphics/Buffer.h rename to BarinkEngine/src/Graphics/Memory/Buffer.h diff --git a/BarinkEngine/src/Graphics/FrameBuffer.cpp b/BarinkEngine/src/Graphics/Memory/FrameBuffer.cpp similarity index 100% rename from BarinkEngine/src/Graphics/FrameBuffer.cpp rename to BarinkEngine/src/Graphics/Memory/FrameBuffer.cpp diff --git a/BarinkEngine/src/Graphics/Framebuffer.h b/BarinkEngine/src/Graphics/Memory/Framebuffer.h similarity index 100% rename from BarinkEngine/src/Graphics/Framebuffer.h rename to BarinkEngine/src/Graphics/Memory/Framebuffer.h diff --git a/BarinkEngine/src/Graphics/VertexArray.cpp b/BarinkEngine/src/Graphics/Memory/VertexArray.cpp similarity index 100% rename from BarinkEngine/src/Graphics/VertexArray.cpp rename to BarinkEngine/src/Graphics/Memory/VertexArray.cpp diff --git a/BarinkEngine/src/Graphics/VertexArray.h b/BarinkEngine/src/Graphics/Memory/VertexArray.h similarity index 100% rename from BarinkEngine/src/Graphics/VertexArray.h rename to BarinkEngine/src/Graphics/Memory/VertexArray.h diff --git a/BarinkEngine/src/Graphics/Primitives/Material.h b/BarinkEngine/src/Graphics/Primitives/Material.h index 510d5b6..c2066c9 100644 --- a/BarinkEngine/src/Graphics/Primitives/Material.h +++ b/BarinkEngine/src/Graphics/Primitives/Material.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include "../Shader.h" +#include "Shader.h" class Material { public: diff --git a/BarinkEngine/src/Graphics/Shader.cpp b/BarinkEngine/src/Graphics/Primitives/Shader.cpp similarity index 100% rename from BarinkEngine/src/Graphics/Shader.cpp rename to BarinkEngine/src/Graphics/Primitives/Shader.cpp diff --git a/BarinkEngine/src/Graphics/Shader.h b/BarinkEngine/src/Graphics/Primitives/Shader.h similarity index 100% rename from BarinkEngine/src/Graphics/Shader.h rename to BarinkEngine/src/Graphics/Primitives/Shader.h diff --git a/BarinkEngine/src/Graphics/Texture.cpp b/BarinkEngine/src/Graphics/Primitives/Texture.cpp similarity index 97% rename from BarinkEngine/src/Graphics/Texture.cpp rename to BarinkEngine/src/Graphics/Primitives/Texture.cpp index 9486a1c..a0d30bc 100644 --- a/BarinkEngine/src/Graphics/Texture.cpp +++ b/BarinkEngine/src/Graphics/Primitives/Texture.cpp @@ -2,7 +2,7 @@ #include #include #define STB_IMAGE_IMPLEMENTATION -#include "stb_image.h" +#include "../stb_image.h" #include Texture::Texture(const std::string texturePath) { diff --git a/BarinkEngine/src/Graphics/Texture.h b/BarinkEngine/src/Graphics/Primitives/Texture.h similarity index 100% rename from BarinkEngine/src/Graphics/Texture.h rename to BarinkEngine/src/Graphics/Primitives/Texture.h diff --git a/BarinkEngine/src/Graphics/Renderable.h b/BarinkEngine/src/Graphics/Renderable.h index f641a72..fdfce68 100644 --- a/BarinkEngine/src/Graphics/Renderable.h +++ b/BarinkEngine/src/Graphics/Renderable.h @@ -1,8 +1,8 @@ #pragma once #include "Primitives/Mesh.h" #include "Primitives/Material.h" -#include "Texture.h" -#include "../Scene.h" +#include "Primitives/Texture.h" +#include "../Scene/Scene.h" namespace BarinkEngine { diff --git a/BarinkEngine/src/Graphics/Renderer.cpp b/BarinkEngine/src/Graphics/Renderer.cpp index 333a3e9..c816229 100644 --- a/BarinkEngine/src/Graphics/Renderer.cpp +++ b/BarinkEngine/src/Graphics/Renderer.cpp @@ -6,125 +6,18 @@ glm::mat4 projection = glm::perspective(glm::radians(cam.Zoom), (800.0f / 600.0f BarinkEngine::Renderer::Renderer() { - models = std::vector(); } BarinkEngine::Renderer::~Renderer() { - // CleanUp! - - // For each model submitted - for ( auto packet : models ) - { - delete packet; - } - - // glDeleteBuffers(1, &UV_id); } -void BarinkEngine::Renderer::Render() -{ - Angle += 0.0001f; - - for (auto model : models) { - // Push matrices etc .... - model->vertexarray.Bind(); - - model->elementBuffer.Bind(true); - - if (model->material == nullptr) { - std::cout << "No material attached!" << std::endl; - // continue; //NOTE: Or use some default Material - } - else { - model->material->shader.Use(); - model->material->Apply(); - - model->material->shader.setUniformVec3("Color", model->material->Color); +void BarinkEngine::Renderer::Render(Scene& scene) +{} - model->material->shader.setUniformMat4("M", glm::rotate(glm::mat4(), Angle, glm::vec3(0.5f, 0.5f, 0.0f))); - model->material->shader.setUniformMat4("V", cam.GetViewMatrix()); - model->material->shader.setUniformMat4("P", projection); - // Update perf counters - ES.verts = model->mesh->vertices.size(); - ES.DC++; - glDrawElements(GL_TRIANGLES, - static_cast(model->mesh->elements.size()), - GL_UNSIGNED_INT, - NULL - ); - } +void Render(Framebuffer& framebuffer) { - - model->vertexarray.Unbind(); - - } -} - - -void BarinkEngine::Renderer::Render(Framebuffer& framebuffer) -{ - glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.GetId()); - glClearColor(1.0f, 0.0f, 0.0f, 1.0f); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - Angle += 0.0001f; - - for (auto model : models) { - // Push matrices etc .... - model->vertexarray.Bind(); - - model->elementBuffer.Bind(true); - - if (model->material == nullptr) { - std::cout << "No material attached!" << std::endl; -// continue; //NOTE: Or use some default Material - } - else { - model->material->shader.Use(); - model->material->Apply(); - - model->material->shader.setUniformVec3("Color", model->material->Color); - - - model->material->shader.setUniformMat4("M", glm::rotate(glm::mat4(), Angle, glm::vec3(0.5f, 0.5f, 0.0f))); - model->material->shader.setUniformMat4("V", cam.GetViewMatrix()); - model->material->shader.setUniformMat4("P", projection); - // Update perf counters - ES.verts = model->mesh->vertices.size(); - ES.DC++; - - glDrawElements(GL_TRIANGLES, - static_cast(model->mesh->elements.size()), - GL_UNSIGNED_INT, - NULL - ); - } - - - model->vertexarray.Unbind(); - - } - - - glBindFramebuffer(GL_FRAMEBUFFER, 0); -} - - -// Upload data to cpu and add object to render list -void BarinkEngine::Renderer::Submit(Renderable* model) -{ - // Upload mesh data to gpu for render - - GPU_Bucket* bucket = new GPU_Bucket(); - - bucket->material = model->material; - - bucket->Upload(*model->mesh); - - models.push_back(bucket); - -} +} \ No newline at end of file diff --git a/BarinkEngine/src/Graphics/Renderer.h b/BarinkEngine/src/Graphics/Renderer.h index 4a6bc1b..86a0986 100644 --- a/BarinkEngine/src/Graphics/Renderer.h +++ b/BarinkEngine/src/Graphics/Renderer.h @@ -1,6 +1,6 @@ #pragma once #include - +#include #include #include "glad/glad.h" #include "GLFW/glfw3.h" @@ -10,7 +10,8 @@ #include "Primitives/Camera.h" #include "Renderable.h" #include "GPUBucket.h" -#include "Framebuffer.h" +#include "Memory/Framebuffer.h" +#include "../Scene/Components.h" namespace BarinkEngine { @@ -19,14 +20,7 @@ namespace BarinkEngine { Renderer(); ~Renderer(); - - void Render(); + void Render(Scene& scene ); void Render(Framebuffer& framebuffer); - - void Submit(Renderable* model); - - private: - std::vector models; - }; } diff --git a/BarinkEngine/src/Platform/Window.cpp b/BarinkEngine/src/Platform/Window.cpp index 8103c4e..4fb8f59 100644 --- a/BarinkEngine/src/Platform/Window.cpp +++ b/BarinkEngine/src/Platform/Window.cpp @@ -11,7 +11,8 @@ bool BarinkWindow::InitGLFW(){ } BarinkWindow::BarinkWindow(const int width, const int height) : -Width(width), Height(height), FullScreen(false){ +Width(width), Height(height), FullScreen(false) +{ if (InitGLFW()==false) { exit(-1); } @@ -22,7 +23,7 @@ Width(width), Height(height), FullScreen(false){ // glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); // glfwWindowHint(GLFW_MAXIMIZED, GLFW_TRUE); // Disable resizing the window - glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); + //glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); window = glfwCreateWindow(Width, Height, "BarinkEngine", NULL, NULL); diff --git a/BarinkEngine/src/Scene.cpp b/BarinkEngine/src/Scene.cpp deleted file mode 100644 index 078a2e4..0000000 --- a/BarinkEngine/src/Scene.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "Scene.h" -#include "Scene.h" -#include "Scene/Node.h" -void DeleteSubGraph(Node* tree); - -Scene::Scene(const std::string& sceneName) -{ - // Create a root node - root = new Group(sceneName); -} - -Scene::~Scene() -{ - // Delete all nodes in the graph. - DeleteSubGraph(root); - -} - - -Node* SearchInChildren(Node* root, const std::string name ) { - - if (root->name == name) - return root; - - Node* found = nullptr; - for (auto child : root->children) { - found = SearchInChildren(child, name); - } - return found; -} - - -Node& Scene::GetSceneNode(std::string name) -{ - return *SearchInChildren(root, name); -} - - - -Node& Scene::GetRoot() -{ - return *root; -} - - - -void Node::addChild(Node& node) -{ - children.push_back(&node); -} - - -void DeleteSubGraph(Node* tree) -{ - if (tree->children.size() == 0) { - delete tree; - return; - } - - for (auto child : tree->children) { - if (child->children.size() > 0) { - DeleteSubGraph(child); - } - } - -} \ No newline at end of file diff --git a/BarinkEngine/src/Scene.h b/BarinkEngine/src/Scene.h deleted file mode 100644 index 8837fb8..0000000 --- a/BarinkEngine/src/Scene.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once -#include -#include - -#include "Graphics/Transform.h" -#include "Scene/Node.h" -/* -* Scene should be a description of a game world -*/ -class Scene { - -public: - Node& GetSceneNode(std::string); - Node& GetRoot(); - - Scene(const std::string& sceneName = "Default Scene"); - ~Scene(); - -private: - Node* root; - -}; - diff --git a/BarinkEngine/src/Scene/Components.h b/BarinkEngine/src/Scene/Components.h new file mode 100644 index 0000000..3f6c5c3 --- /dev/null +++ b/BarinkEngine/src/Scene/Components.h @@ -0,0 +1,27 @@ +#pragma once +#include + +namespace BarinkEngine { + + struct TransformComponent { + glm::mat4& transform = glm::mat4(1.0f); + + }; + + + struct CameraComponent { + glm::mat4& view; + + }; + + struct Render3DComponent { + unsigned int VAO; + unsigned int IBO; + + }; + + struct Render2DComponent { + glm::vec3 Colour; + + }; +}; \ No newline at end of file diff --git a/BarinkEngine/src/Scene/Entity.cpp b/BarinkEngine/src/Scene/Entity.cpp new file mode 100644 index 0000000..d6e784d --- /dev/null +++ b/BarinkEngine/src/Scene/Entity.cpp @@ -0,0 +1,7 @@ +#include "Entity.h" + +Entity::Entity(entt::entity e, Scene* scene) + : m_entity(e), m_scene(scene) +{ +} + diff --git a/BarinkEngine/src/Scene/Entity.h b/BarinkEngine/src/Scene/Entity.h new file mode 100644 index 0000000..1d45ee0 --- /dev/null +++ b/BarinkEngine/src/Scene/Entity.h @@ -0,0 +1,22 @@ +#pragma once +#include +class Scene; + +class Entity { +public: + Entity() = default; + Entity(entt::entity e, Scene* scene); + Entity(const Entity& other) = default; + + + template + T AddComponent() { + return m_scene->m_registry.emplace(m_entity); + } + +private: + entt::entity m_entity; + Scene* m_scene; + +}; + diff --git a/BarinkEngine/src/Scene/Scene.cpp b/BarinkEngine/src/Scene/Scene.cpp new file mode 100644 index 0000000..fab0863 --- /dev/null +++ b/BarinkEngine/src/Scene/Scene.cpp @@ -0,0 +1,14 @@ +#include "Scene.h" +#include "Entity.h" +Scene::Scene() +{ +} + +Scene::~Scene() +{} + +Entity Scene::AddEntity(std::string& name) +{ + return { m_registry.create(), this }; +} + diff --git a/BarinkEngine/src/Scene/Scene.h b/BarinkEngine/src/Scene/Scene.h new file mode 100644 index 0000000..b706258 --- /dev/null +++ b/BarinkEngine/src/Scene/Scene.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include +class Entity; + +class Scene +{ +public: + Scene(); + ~Scene(); + + Entity AddEntity(std::string& name); + + entt::registry& getReg() { return m_registry; } + +private: + entt::registry m_registry; + + friend class Entity; +}; + + diff --git a/BarinkEngine/src/Scene/SceneBuilder.h b/BarinkEngine/src/Scene/SceneBuilder.h deleted file mode 100644 index 9c0af66..0000000 --- a/BarinkEngine/src/Scene/SceneBuilder.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -#include "Graphics/Renderable.h" -#include "Scene/SceneNodeTypes.h" - -#include -#include "../../src/Scene/SceneNodeTypes.cpp" -/* -* Define a helper class to more easily build a proper scene -*/ -static class SceneBuilder { - - static Group* AddGroup(std::string name); - static BarinkEngine::SceneObject* AddVisual(std::string name, BarinkEngine::Renderable& object, glm::vec3 position ); - -}; \ No newline at end of file diff --git a/BarinkEngine/src/Scene/SceneManager.cpp b/BarinkEngine/src/Scene/SceneManager.cpp deleted file mode 100644 index b49f37f..0000000 --- a/BarinkEngine/src/Scene/SceneManager.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "SceneManager.h" - -Scene* SceneManager::CreateScene(const std::string& name) -{ - /* - Scenes = std::map(); - SceneManager::Scenes[name] = new Scene(name); - */ - - return new Scene(name); -} - -Scene& SceneManager::GetScene(const std::string& name) -{ - return Scene(); - //return *SceneManager::Scenes[name]; -} - -void SceneManager::LoadScene( Scene& scene) -{ - //SceneManager::CurrentScene = &scene; -} \ No newline at end of file diff --git a/BarinkEngine/src/Scene/SceneManager.h b/BarinkEngine/src/Scene/SceneManager.h deleted file mode 100644 index dbfcf92..0000000 --- a/BarinkEngine/src/Scene/SceneManager.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once -#include -#include -#include "../Scene.h" -class SceneManager { - -public: - static Scene* CreateScene(const std::string& name ); - static Scene& GetScene(const std::string& name); - - static void LoadScene(Scene& scene); - -private: - static Scene* CurrentScene; - static std::map Scenes; - -}; \ No newline at end of file diff --git a/BarinkEngine/src/Scene/Node.cpp b/BarinkEngine/src/Scene/TransformTree/Node.cpp similarity index 100% rename from BarinkEngine/src/Scene/Node.cpp rename to BarinkEngine/src/Scene/TransformTree/Node.cpp diff --git a/BarinkEngine/src/Scene/Node.h b/BarinkEngine/src/Scene/TransformTree/Node.h similarity index 88% rename from BarinkEngine/src/Scene/Node.h rename to BarinkEngine/src/Scene/TransformTree/Node.h index 2b0126d..3039714 100644 --- a/BarinkEngine/src/Scene/Node.h +++ b/BarinkEngine/src/Scene/TransformTree/Node.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include "../Graphics/Transform.h" +#include "../../Graphics/Transform.h" class Node { public: diff --git a/BarinkEngine/src/Scene/SceneNodeTypes.cpp b/BarinkEngine/src/Scene/TransformTree/SceneNodeTypes.cpp similarity index 100% rename from BarinkEngine/src/Scene/SceneNodeTypes.cpp rename to BarinkEngine/src/Scene/TransformTree/SceneNodeTypes.cpp diff --git a/BarinkEngine/src/Scene/SceneNodeTypes.h b/BarinkEngine/src/Scene/TransformTree/SceneNodeTypes.h similarity index 77% rename from BarinkEngine/src/Scene/SceneNodeTypes.h rename to BarinkEngine/src/Scene/TransformTree/SceneNodeTypes.h index 67a49fd..a6c5d1e 100644 --- a/BarinkEngine/src/Scene/SceneNodeTypes.h +++ b/BarinkEngine/src/Scene/TransformTree/SceneNodeTypes.h @@ -1,6 +1,6 @@ #pragma once -#include "../Graphics/Primitives/Camera.h" -#include "../Graphics/Renderable.h" +#include "../../Graphics/Primitives/Camera.h" +#include "../../Graphics/Renderable.h" #include "Node.h" namespace BarinkEngine { diff --git a/SandboxApp/include/Util.h b/SandboxApp/include/Util.h deleted file mode 100644 index d09aa60..0000000 --- a/SandboxApp/include/Util.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#include "../../BarinkEngine/src/BarinkEngine.h" - -void PrintSceneTree(Node& node, int depth); - -glm::mat4 CalculateModelMat(Transform& transform); \ No newline at end of file diff --git a/SandboxApp/premake5.lua b/SandboxApp/premake5.lua index ce11d35..cbf2b45 100644 --- a/SandboxApp/premake5.lua +++ b/SandboxApp/premake5.lua @@ -24,10 +24,10 @@ includedirs{ "./../libs/glew/include", "./../libs/glm", "./../libs/ImGui", + + "../libs/entt/src", - "./include" - } libdirs { @@ -35,6 +35,6 @@ libdirs { } files { - "./include/*.h", + "./src/*.h", "./src/*.cpp" } \ No newline at end of file diff --git a/SandboxApp/src/GUI.cpp b/SandboxApp/src/GUI.cpp index 7a5896b..84c41dd 100644 --- a/SandboxApp/src/GUI.cpp +++ b/SandboxApp/src/GUI.cpp @@ -68,8 +68,8 @@ void SceneView(Framebuffer& framebuffer ) { ImGui::End(); } - -void transformWindow(Transform& transform, std::string PanelName) { +/* +* void transformWindow(Transform& transform, std::string PanelName) { ImGui::Begin(PanelName.c_str()); ImGui::InputFloat3("Position:", (float*)&transform.Position[0]); ImGui::InputFloat3("Rotation:", (float*)&transform.Rotation[0]); @@ -78,6 +78,8 @@ void transformWindow(Transform& transform, std::string PanelName) { } +*/ + void materialWindow(Material& material, std::string PanelName) { ImGui::Begin(PanelName.c_str()); ImGui::ColorPicker3("Color:", &material.Color[0]); diff --git a/SandboxApp/include/GUI.h b/SandboxApp/src/GUI.h similarity index 58% rename from SandboxApp/include/GUI.h rename to SandboxApp/src/GUI.h index a5ad726..e711383 100644 --- a/SandboxApp/include/GUI.h +++ b/SandboxApp/src/GUI.h @@ -1,11 +1,11 @@ #pragma once #include "imgui.h" #include "../../BarinkEngine/src/BarinkEngine.h" -#include "../../BarinkEngine/src/Graphics/Framebuffer.h" +#include "../../BarinkEngine/src/Graphics/Memory/Framebuffer.h" void CameraTool(); void ScriptingTool(char* code); -void transformWindow(Transform& transform, std::string PanelName); +///void transformWindow(Transform& transform, std::string PanelName); void materialWindow(Material& material, std::string PanelName); void SceneExplorer(const std::string& PanelName); void SceneView(Framebuffer& framebuffer); \ No newline at end of file diff --git a/SandboxApp/src/Sandbox.cpp b/SandboxApp/src/Sandbox.cpp index cf1c8cc..8eca6c1 100644 --- a/SandboxApp/src/Sandbox.cpp +++ b/SandboxApp/src/Sandbox.cpp @@ -1,57 +1,44 @@ #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 "../../BarinkEngine/src/Scene/Components.h" +#include "../../BarinkEngine/src/Scene/Scene.h" +#include "../../BarinkEngine/src/Scene/Entity.h" #include #include "GUI.h" #include "Util.h" - +#include /* * Define globals */ -Shader* shader; - -char* code = new char[254]; - +//Shader* shader; const std::string vertexShaderSource = "build/Debug/test.vs"; const std::string fragmentShaderSource = "build/Debug/test.fs"; -BarinkEngine::ModelImporter* MI = new BarinkEngine::ModelImporter(); -Scene* Level1; -BarinkEngine::SceneObject* cube; +Scene scene; /* * Runs once at startup * - USe to initialize the game/sandbox/demo */ void Start() { + // shader = new Shader(vertexShaderSource, fragmentShaderSource); + + auto cube = scene.AddEntity((std::string&)"cube"); + auto transform = cube.AddComponent(); + auto render3DComponent = cube.AddComponent(); + + auto cube2 = scene.AddEntity((std::string&)"cube1"); + + auto cube3 = scene.AddEntity((std::string&)"cube2"); + auto Transform2 = cube3.AddComponent(); + auto render3DComponent2 = cube3.AddComponent(); - // 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); - - // TODO: Move to runtime/ Engine - // NOTE: Submits should later be done through walking the sceneTree - - renderer.Submit(cube->renderable); - + // Run over every transform component + auto view = scene.getReg().view(); + view.each([](auto entity, auto& transform) { + std::cout << "Found a transform !" << std::endl; + }); + + } /* @@ -71,7 +58,7 @@ void ImmediateGraphicsDraw() void Update() { - renderer.Render(); + renderer.Render(scene); } @@ -81,6 +68,4 @@ void Update() */ void Stop() { - delete MI; - delete shader; } \ No newline at end of file diff --git a/SandboxApp/src/Util.cpp b/SandboxApp/src/Util.cpp index abb8e9d..5f8bb5f 100644 --- a/SandboxApp/src/Util.cpp +++ b/SandboxApp/src/Util.cpp @@ -1,6 +1,7 @@ #include "Util.h" -void PrintSceneTree(Node& node, int depth) { +/* +* void PrintSceneTree(Node& node, int depth) { // Indent name based on depth std::cout << " "; for (int i = 0; i < depth; i++) { @@ -30,3 +31,5 @@ glm::mat4 CalculateModelMat(Transform& transform) { return tran * rot * scale; } +*/ + diff --git a/SandboxApp/src/Util.h b/SandboxApp/src/Util.h new file mode 100644 index 0000000..de2df52 --- /dev/null +++ b/SandboxApp/src/Util.h @@ -0,0 +1,6 @@ +#pragma once +#include "../../BarinkEngine/src/BarinkEngine.h" + +//void PrintSceneTree(Node& node, int depth); + +//glm::mat4 CalculateModelMat(Transform& transform); \ No newline at end of file