Basic Entity Components implementation
This commit is contained in:
@ -1,6 +0,0 @@
|
||||
#pragma once
|
||||
#include "../../BarinkEngine/src/BarinkEngine.h"
|
||||
|
||||
void PrintSceneTree(Node& node, int depth);
|
||||
|
||||
glm::mat4 CalculateModelMat(Transform& transform);
|
@ -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"
|
||||
}
|
@ -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]);
|
||||
|
@ -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);
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
6
SandboxApp/src/Util.h
Normal file
6
SandboxApp/src/Util.h
Normal file
@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
#include "../../BarinkEngine/src/BarinkEngine.h"
|
||||
|
||||
//void PrintSceneTree(Node& node, int depth);
|
||||
|
||||
//glm::mat4 CalculateModelMat(Transform& transform);
|
Reference in New Issue
Block a user