Basic Entity Components implementation

This commit is contained in:
2022-10-23 00:14:47 +02:00
parent b359a940ba
commit 7458254b2d
40 changed files with 160 additions and 344 deletions

View File

@ -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 <imgui.h>
#include "GUI.h"
#include "Util.h"
#include <entt/entt.hpp>
/*
* 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<BarinkEngine::TransformComponent>();
auto render3DComponent = cube.AddComponent<BarinkEngine::Render3DComponent>();
auto cube2 = scene.AddEntity((std::string&)"cube1");
auto cube3 = scene.AddEntity((std::string&)"cube2");
auto Transform2 = cube3.AddComponent<BarinkEngine::TransformComponent>();
auto render3DComponent2 = cube3.AddComponent<BarinkEngine::Render3DComponent>();
// 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<BarinkEngine::TransformComponent, BarinkEngine::Render3DComponent>();
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;
}