YoggieEngine/Editor/src/main.cpp

130 lines
2.7 KiB
C++
Raw Normal View History

#include "../../BarinkEngine/src/BarinkEngine.h"
#include "../../BarinkEngine/src/AssetManager/ModelImporter.h"
2022-11-03 14:06:42 +00:00
#include "../../BarinkEngine/src/Graphics/Memory/Framebuffer.h"
#include <imgui.h>
2022-11-03 14:06:42 +00:00
#include "../../BarinkEngine/src/PerfCounter.cpp"
#include "../../BarinkEngine/src/Scene/Entity.h"
#include "stb_image.h"
#include "../../libs/guizmo/ImGuizmo.h"
#include "../../libs/glm/glm/gtc/type_ptr.hpp"
#include <glm/gtc/matrix_transform.hpp>
#include "widgets/widgets.h"
/*
* Define globals
*/
Framebuffer* framebuffer;
2022-11-03 14:06:42 +00:00
Scene Level1;
BarinkEngine::SceneObject* Model;
Entity cube;
/*
* Runs once at startup
* - USe to initialize the game/sandbox/demo
*/
void Start() {
2022-11-03 14:06:42 +00:00
auto io = ImGui::GetIO();
io.Fonts->AddFontFromFileTTF("build/Debug/Fonts/Roboto-Regular.ttf", 18);
framebuffer = new Framebuffer();
// Build a basic test scene
// NOTE: This will later be done through an editor
// Create a level and load it as the current level
2022-11-03 14:06:42 +00:00
auto importer = BarinkEngine::ModelImporter();
// Create a cube
Model = importer.Import("build/Debug/Models/Cube.obj");
cube = Level1.AddEntity("cube");
auto& render3DComponent = cube.AddComponent<BarinkEngine::Render3DComponent>();
render3DComponent.mesh = *(Model->renderable->mesh);
cube.GetComponent<BarinkEngine::TransformComponent>().transform = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f, 0.0f, 5.0f));
renderer.Prepare(Level1);
2022-11-03 14:06:42 +00:00
// create an ambient light source
auto AmbientLight = Level1.AddEntity("AmbientLight");
AmbientLight.AddComponent<BarinkEngine::LightComponent>();
2022-11-03 14:06:42 +00:00
std::cout << "Colour attachment id; " << framebuffer->GetColourAttachment() << std::endl;
2022-11-03 14:06:42 +00:00
renderer.Prepare(Level1);
}
/*
* Runs every frame
* - Use to draw Immediate mode graphics (Not meant for HUD's )
*/
void ImmediateGraphicsDraw()
2022-11-03 14:06:42 +00:00
{ ImGui::DockSpaceOverViewport(ImGui::GetMainViewport());
// Show a menu bar
ImGui::BeginMainMenuBar();
if (ImGui::BeginMenu("Application")) {
2022-11-03 14:06:42 +00:00
if (ImGui::MenuItem("Preferences")) {
}
if (ImGui::MenuItem("Exit")) {
// TODO: Exit application
}
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
// Show internal BarinkEngine stats
2022-11-03 14:06:42 +00:00
//ShowStats();
Viewport(*framebuffer , Level1);
Inspector();
SceneExplorer(Level1);
Settings();
AssetsFinder();
Console();
2022-11-03 14:06:42 +00:00
ImGui::ShowMetricsWindow();
2022-11-03 14:06:42 +00:00
}
2022-11-03 14:06:42 +00:00
void Render()
{
renderer.Render( *framebuffer, Level1);
}
2022-11-03 14:06:42 +00:00
/*
* Runs every frame
* - Meant for game logic ( non-physics related)
*/
void Update()
{
2022-11-03 14:06:42 +00:00
}
2022-11-03 14:06:42 +00:00
/*
* Runs every physics update
*/
void fixed_update()
{
}
/*
* Runs at the end of the program
* - Meant for cleanup
*/
void Stop()
{
delete framebuffer;
}