Multiple changes to prepare for the basic render engine.
* Rendering 2 cubes * per cube transform panels * Updated TODO.md * Updated README.md
This commit is contained in:
@ -1,106 +1,53 @@
|
||||
#include "BarinkEngine.h"
|
||||
#include <imgui.h>
|
||||
|
||||
extern void Start(int argc, char* argv[]);
|
||||
extern void Start();
|
||||
extern void Update();
|
||||
extern void ImmediateGraphicsDraw();
|
||||
extern void Stop();
|
||||
|
||||
using namespace BarinkEngine;
|
||||
void DrawMyGUI();
|
||||
|
||||
BarinkWindow* MainWindow;
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
|
||||
// Startup services
|
||||
MainWindow = new BarinkWindow(800, 600);
|
||||
BarinkWindow MainWindow = BarinkWindow(800, 600);
|
||||
|
||||
Renderer renderer = Renderer();
|
||||
InputManager InputSystem = InputManager();
|
||||
|
||||
InputSystem.attach(&MainWindow);
|
||||
|
||||
InputSystem.attach(MainWindow);
|
||||
|
||||
GUIManager GUISystem = GUIManager(MainWindow);
|
||||
|
||||
|
||||
|
||||
GUIManager GUISystem = GUIManager(&MainWindow);
|
||||
|
||||
// First call to setup game
|
||||
Start(argc, argv);
|
||||
|
||||
Start();
|
||||
|
||||
// Runtime loop
|
||||
while (!MainWindow->WindowShouldClose()) {
|
||||
while (!MainWindow.WindowShouldClose()) {
|
||||
InputSystem.PollEvents();
|
||||
|
||||
Update();
|
||||
|
||||
|
||||
renderer.Render();
|
||||
|
||||
|
||||
DrawMyGUI();
|
||||
ImmediateGraphicsDraw();
|
||||
|
||||
GUISystem.Render();
|
||||
|
||||
|
||||
|
||||
|
||||
MainWindow->SwapBuffers();
|
||||
MainWindow.SwapBuffers();
|
||||
}
|
||||
|
||||
|
||||
// Shutdown game
|
||||
|
||||
Stop();
|
||||
|
||||
|
||||
// Shutdown Services
|
||||
delete MainWindow;
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void WARN(std::string message) {
|
||||
spdlog::warn(message);
|
||||
}
|
||||
|
||||
|
||||
void DrawMyGUI() {
|
||||
ImGui::NewFrame();
|
||||
|
||||
ImGui::Begin("Transform");
|
||||
ImGui::Text("Cube");
|
||||
/*
|
||||
ImGui::InputFloat3("Position:", (float*)nullptr);
|
||||
ImGui::InputFloat3("Rotation:", (float*)nullptr);
|
||||
ImGui::InputFloat3("Scale:", (float*)nullptr);
|
||||
|
||||
*/
|
||||
|
||||
ImGui::End();
|
||||
|
||||
ImGui::Begin("Camera");
|
||||
|
||||
//ImGui::SliderFloat("Zoom:", &NULL, 10, 190);
|
||||
|
||||
ImGui::End();
|
||||
|
||||
|
||||
ImGui::Begin("Scripting!!");
|
||||
|
||||
//ImGui::InputTextMultiline("Lua Script", nullptr, 255);
|
||||
//runCode = ImGui::Button("Run");
|
||||
|
||||
|
||||
ImGui::End();
|
||||
|
||||
|
||||
ImGui::ShowDemoWindow();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "Input/InputManager.h"
|
||||
#include "Graphics/Renderer.h"
|
||||
#include "Graphics/GUI/GUIManager.h"
|
||||
#include "Scene.h"
|
||||
|
||||
void WARN(std::string message);
|
||||
|
||||
|
@ -1,26 +1,18 @@
|
||||
#pragma once
|
||||
#include <vector>
|
||||
#include "Mesh.h"
|
||||
#include "Transform.h"
|
||||
#include "Buffer.h"
|
||||
#include "VertexArray.h"
|
||||
#include "Scene.h"
|
||||
|
||||
/*
|
||||
#include <MyGraphicsEngine/AssetManager/ModelImporter.h>
|
||||
#include <MyGraphicsEngine/MyGraphicsEngine/Buffer.h>
|
||||
#include <MyGraphicsEngine/MyGraphicsEngine/VertexArray.h>
|
||||
|
||||
*/
|
||||
|
||||
class Renderable {
|
||||
class Renderable : public SceneNode {
|
||||
public:
|
||||
Buffer vertexBuffer;
|
||||
Buffer elementBuffer;
|
||||
VertexArray VAO;
|
||||
Transform transform;
|
||||
~Renderable();
|
||||
|
||||
static Renderable Load();
|
||||
static Renderable* Load();
|
||||
void Draw();
|
||||
|
||||
private:
|
||||
|
@ -1,8 +0,0 @@
|
||||
#pragma once
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
struct Transform {
|
||||
glm::vec3 Position;
|
||||
glm::vec3 Rotation;
|
||||
glm::vec3 Scale;
|
||||
};
|
47
BarinkEngine/Include/Scene.h
Normal file
47
BarinkEngine/Include/Scene.h
Normal file
@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "glm/glm.hpp"
|
||||
|
||||
/*
|
||||
* Scene should be a description of a game world
|
||||
*/
|
||||
|
||||
struct Transform {
|
||||
glm::vec3 Position;
|
||||
glm::vec3 Rotation;
|
||||
glm::vec3 Scale;
|
||||
|
||||
glm::mat4 ModelMatrix;
|
||||
};
|
||||
|
||||
|
||||
class SceneNode {
|
||||
public:
|
||||
std::string name;
|
||||
Transform transform;
|
||||
SceneNode* parent;
|
||||
std::vector<SceneNode*> children;
|
||||
|
||||
|
||||
void addChild(SceneNode& node);
|
||||
|
||||
};
|
||||
|
||||
|
||||
class Scene {
|
||||
|
||||
public:
|
||||
SceneNode& GetSceneNode(std::string);
|
||||
SceneNode& GetRoot();
|
||||
|
||||
Scene(std::string SceneName = "Default Scene");
|
||||
~Scene();
|
||||
|
||||
|
||||
private:
|
||||
SceneNode* root;
|
||||
|
||||
};
|
||||
|
52
BarinkEngine/Scene.cpp
Normal file
52
BarinkEngine/Scene.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
#include "Scene.h"
|
||||
|
||||
|
||||
SceneNode* SearchInChildren(SceneNode* root, std::string name ) {
|
||||
|
||||
if (root->name == name)
|
||||
return root;
|
||||
|
||||
SceneNode* found = nullptr;
|
||||
for (auto child : root->children) {
|
||||
found = SearchInChildren(child, name);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
|
||||
SceneNode& Scene::GetSceneNode(std::string name)
|
||||
{
|
||||
return *SearchInChildren(root, name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
SceneNode& Scene::GetRoot()
|
||||
{
|
||||
return *root;
|
||||
}
|
||||
|
||||
Scene::Scene(std::string sceneName)
|
||||
{
|
||||
// Create a root node
|
||||
root = new SceneNode();
|
||||
root->name = sceneName;
|
||||
root->transform = Transform();
|
||||
|
||||
root->transform.Position = glm::vec3(0);
|
||||
root->transform.Rotation = glm::vec3(0);
|
||||
root->transform.Scale = glm::vec3(0);
|
||||
|
||||
root->transform.ModelMatrix = glm::mat4(0);
|
||||
|
||||
}
|
||||
|
||||
Scene::~Scene()
|
||||
{
|
||||
// Destruct scene!
|
||||
}
|
||||
|
||||
void SceneNode::addChild(SceneNode& node)
|
||||
{
|
||||
children.push_back(&node);
|
||||
}
|
@ -94,8 +94,6 @@ BarinkEngine::Mesh ModelImporter::processMesh(aiMesh* mesh, const aiScene* scene
|
||||
vertices.push_back(vector);
|
||||
}
|
||||
|
||||
//spdlog::info("{} == {}", mesh->mNumVertices, vertices.size());
|
||||
|
||||
// Process Indices
|
||||
for (unsigned int i = 0; i < mesh->mNumFaces; i++) {
|
||||
aiFace face = mesh->mFaces[i];
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
|
||||
|
||||
Renderable Renderable::Load()
|
||||
Renderable* Renderable::Load()
|
||||
{
|
||||
return Renderable();
|
||||
return new Renderable();
|
||||
}
|
||||
|
||||
Renderable::Renderable()
|
||||
|
Reference in New Issue
Block a user