Compare commits

...

2 Commits

Author SHA1 Message Date
9a9db279a5 Added new ComponentWidget and ViewWidget
A Render3DComponent can now be edited, A game view is available in the editor for game runtime rendering
2022-11-05 20:50:35 +01:00
210d535c41 Removed unnecessary inlcudes
This togheter with the previous commit has drastically improved compile time
2022-11-05 20:33:19 +01:00
40 changed files with 66 additions and 128 deletions

View File

@ -1,6 +1,7 @@
#pragma once #pragma once
struct EditorContext { struct EditorContext {
std::shared_ptr<Project> CurrentProject; std::shared_ptr<Project> CurrentProject;
Scene MainScene; Scene MainScene;
EditorContext() = default; EditorContext() = default;

View File

@ -5,10 +5,10 @@
#include "../../YoggieEngine/src/Scene/Entity.h" #include "../../YoggieEngine/src/Scene/Entity.h"
#include "Project.h" #include "Project.h"
class SceneRuntime : public ApplicationRuntime { class EditorRuntime : public ApplicationRuntime {
public: public:
SceneRuntime() = default; EditorRuntime() = default;
void Start() override void Start() override
{ {
CurrentProject = std::make_shared<Project>("Random"); CurrentProject = std::make_shared<Project>("Random");

View File

@ -42,8 +42,6 @@ void Inspector(entt::entity ent , Scene& scene) {
ImGui::EndPopup(); ImGui::EndPopup();
} }
ImGui::NewLine(); ImGui::NewLine();
auto component = entity.GetComponent<IdentifierComponent>(); auto component = entity.GetComponent<IdentifierComponent>();
@ -62,6 +60,13 @@ void Inspector(entt::entity ent , Scene& scene) {
} }
if (entity.HasComponent<Render3DComponent>()) {
auto& render3d = entity.GetComponent<Render3DComponent>();
if (ImGui::CollapsingHeader("Render3D", ImGuiTreeNodeFlags_DefaultOpen)) {
ImGui::ColorEdit3("Colour", glm::value_ptr(render3d.color));
}
}
if (entity.HasComponent<LightComponent>()) { if (entity.HasComponent<LightComponent>()) {
auto& light = entity.GetComponent<LightComponent>(); auto& light = entity.GetComponent<LightComponent>();
if (ImGui::CollapsingHeader("Light", ImGuiTreeNodeFlags_DefaultOpen)) { if (ImGui::CollapsingHeader("Light", ImGuiTreeNodeFlags_DefaultOpen)) {
@ -110,13 +115,8 @@ void SceneExplorer(entt::entity& selected, Scene& scene )
void Viewport(Framebuffer& framebuffer) { void Viewport(Framebuffer& framebuffer) {
unsigned int viewportWindowFlags = ImGuiWindowFlags_NoTitleBar unsigned int viewportWindowFlags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar ;
| ImGuiWindowFlags_NoDecoration
| ImGuiWindowFlags_NoScrollbar
| ImGuiWindowFlags_NoMove
| ImGuiWindowFlags_NoCollapse;
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2{ 0,0 });
ImGui::Begin("Viewport", false, viewportWindowFlags); ImGui::Begin("Viewport", false, viewportWindowFlags);
ImGui::Image((void*)(intptr_t)framebuffer.GetColourAttachment(), ImVec2{ (float)800,(float)600 }); ImGui::Image((void*)(intptr_t)framebuffer.GetColourAttachment(), ImVec2{ (float)800,(float)600 });
@ -138,7 +138,18 @@ void Viewport(Framebuffer& framebuffer) {
//ImGuizmo::Manipulate(glm::value_ptr(static_cam), glm::value_ptr(static_projection), ImGuizmo::TRANSLATE, ImGuizmo::WORLD, glm::value_ptr(trans)); //ImGuizmo::Manipulate(glm::value_ptr(static_cam), glm::value_ptr(static_projection), ImGuizmo::TRANSLATE, ImGuizmo::WORLD, glm::value_ptr(trans));
ImGuizmo::ViewManipulate(glm::value_ptr(cam), 8.0f, ImVec2{ 0.0f,0.0f }, ImVec2{ 128.0f,128.0f }, 0x10101010); ImGuizmo::ViewManipulate(glm::value_ptr(cam), 8.0f, ImVec2{ 0.0f,0.0f }, ImVec2{ 128.0f,128.0f }, 0x10101010);
ImGui::End(); ImGui::End();
ImGui::PopStyleVar();
}
void GamePort(Framebuffer& framebuffer)
{
unsigned int viewportWindowFlags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar;
ImGui::Begin("Game", false, viewportWindowFlags);
ImGui::Image((void*)(intptr_t)framebuffer.GetColourAttachment(), ImVec2{ (float)800, (float)600 });
ImGui::End();
} }

View File

@ -19,6 +19,8 @@ void SceneExplorer(entt::entity& selected, Scene& scene);
void Viewport(Framebuffer& framebuffer); void Viewport(Framebuffer& framebuffer);
void GamePort(Framebuffer& framebuffer);
void Settings(); void Settings();
void Console(); void Console();

View File

@ -1,12 +1,13 @@
#include <glm/gtc/type_ptr.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <imgui.h> #include <imgui.h>
#include <backends/imgui_impl_opengl3.h> #include <backends/imgui_impl_opengl3.h>
#include <backends/imgui_impl_glfw.h> #include <backends/imgui_impl_glfw.h>
#include <imgui_internal.h> #include <ImGuizmo.h>
#include <nfd.h> #include <nfd.h>
#include "../../libs/guizmo/ImGuizmo.h" #include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include "UI/Widgets.h" #include "UI/Widgets.h"
#include "Project.h" #include "Project.h"
@ -230,6 +231,7 @@ public:
//ShowStats(); //ShowStats();
Viewport(*activeRuntime.framebuffer); Viewport(*activeRuntime.framebuffer);
GamePort(*activeRuntime.framebuffer);
SceneExplorer(activeRuntime.Selected, activeRuntime.MainScene); SceneExplorer(activeRuntime.Selected, activeRuntime.MainScene);
Inspector(activeRuntime.Selected, activeRuntime.MainScene); Inspector(activeRuntime.Selected, activeRuntime.MainScene);
@ -245,7 +247,7 @@ public:
private: private:
EditorContext context; EditorContext context;
SceneRuntime activeRuntime ; EditorRuntime activeRuntime ;
char* path = nullptr; char* path = nullptr;
char* savePath = nullptr; char* savePath = nullptr;
char* scenePath = nullptr; char* scenePath = nullptr;

View File

@ -1,11 +1,6 @@
#pragma once #pragma once
#include "YoggieEngine.h" #include "YoggieEngine.h"
#include "Input/InputManager.h"
#include "Graphics/Renderer.h"
#include <string>
#include <iostream>
#include <memory>
namespace YoggieEngine { namespace YoggieEngine {
// forward declaration // forward declaration
class InputManager; class InputManager;

View File

@ -1,6 +1,6 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "ModelImporter.h" #include "ModelImporter.h"
#include "spdlog/spdlog.h"
namespace YoggieEngine { namespace YoggieEngine {
SceneObject* ModelImporter::Import(const std::string path) SceneObject* ModelImporter::Import(const std::string path)

View File

@ -1,7 +1,4 @@
#pragma once #pragma once
#include <string>
namespace YoggieEngine { namespace YoggieEngine {
struct Event struct Event

View File

@ -1,7 +1,5 @@
#pragma once #pragma once
#include "Event.h"
#include "EventListener.h"
namespace YoggieEngine{ namespace YoggieEngine{
class EventEmitter { class EventEmitter {
public: public:

View File

@ -1,8 +1,4 @@
#pragma once #pragma once
#include <list>
#include <iostream>
#include "spdlog/spdlog.h"
#include "Event.h" #include "Event.h"
namespace YoggieEngine { namespace YoggieEngine {
class EventListener { class EventListener {

View File

@ -1,6 +1,4 @@
#pragma once #pragma once
#include <glad/glad.h>
namespace YoggieEngine { namespace YoggieEngine {
class Buffer { class Buffer {

View File

@ -1,6 +1,6 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "Framebuffer.h" #include "Framebuffer.h"
#include <iostream>
namespace YoggieEngine { namespace YoggieEngine {
Framebuffer::Framebuffer() Framebuffer::Framebuffer()
{ {

View File

@ -1,7 +1,4 @@
#pragma once #pragma once
#include <glad/glad.h>
#include <glm/glm.hpp>
namespace YoggieEngine { namespace YoggieEngine {
class Framebuffer { class Framebuffer {

View File

@ -1,6 +1,5 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "UniformBuffer.h" #include "UniformBuffer.h"
#include <glad/glad.h>
namespace YoggieEngine { namespace YoggieEngine {
UniformBuffer::UniformBuffer(unsigned int size) UniformBuffer::UniformBuffer(unsigned int size)

View File

@ -1,6 +1,5 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "VertexArray.h" #include "VertexArray.h"
#include <glad/glad.h>
namespace YoggieEngine { namespace YoggieEngine {
void VertexArray::Create() { void VertexArray::Create() {
glGenVertexArrays(1, &id); glGenVertexArrays(1, &id);

View File

@ -1,8 +1,4 @@
#pragma once #pragma once
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
namespace YoggieEngine { namespace YoggieEngine {
class Camera { class Camera {
public: public:

View File

@ -1,6 +1,5 @@
#pragma once #pragma once
#include <glm/glm.hpp> #include <glm/glm.hpp>
#include <string>
#include "Shader.h" #include "Shader.h"
namespace YoggieEngine { namespace YoggieEngine {

View File

@ -1,6 +1,5 @@
#pragma once #pragma once
#include <vector> #include <vector>
#include <glm/glm.hpp>
#include "Vertex.h" #include "Vertex.h"
namespace YoggieEngine { namespace YoggieEngine {

View File

@ -1,6 +1,5 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "Shader.h" #include "Shader.h"
#include "spdlog/spdlog.h"
namespace YoggieEngine { namespace YoggieEngine {
Shader::Shader(const std::string vertexShaderPath, const std::string fragmentShaderPath) Shader::Shader(const std::string vertexShaderPath, const std::string fragmentShaderPath)
{ {

View File

@ -1,10 +1,4 @@
#pragma once #pragma once
#include <glad/glad.h>
#include <string>
#include <iostream>
#include <fstream>
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
namespace YoggieEngine { namespace YoggieEngine {
class Shader { class Shader {

View File

@ -1,10 +1,8 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "Texture.h" #include "Texture.h"
#include <glad/glad.h>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#include "../stb_image.h" #include "../stb_image.h"
#include <iostream>
namespace YoggieEngine { namespace YoggieEngine {
Texture::Texture(const std::string texturePath) { Texture::Texture(const std::string texturePath) {

View File

@ -1,7 +1,4 @@
#pragma once #pragma once
#include <spdlog/spdlog.h>
#include <string>
namespace YoggieEngine { namespace YoggieEngine {
class Texture { class Texture {
public: public:

View File

@ -1,6 +1,4 @@
#pragma once #pragma once
#include <glm/glm.hpp>
namespace YoggieEngine { namespace YoggieEngine {
struct Vertex { struct Vertex {
glm::vec3 vertices; glm::vec3 vertices;

View File

@ -4,8 +4,6 @@ namespace YoggieEngine {
RenderSurface::RenderSurface() { RenderSurface::RenderSurface() {
shader = new Shader("build/SandboxAppliction/Debug/renderSuface.vs", "build/SandboxApplication/Debug/renderSurface.fs"); shader = new Shader("build/SandboxAppliction/Debug/renderSuface.vs", "build/SandboxApplication/Debug/renderSurface.fs");
verts = std::vector<glm::vec3>{ verts = std::vector<glm::vec3>{
{-0.5f, 0.5f, 0.0f}, // 0 {-0.5f, 0.5f, 0.0f}, // 0
{-0.5f, -0.5f, 0.0f}, // 1 {-0.5f, -0.5f, 0.0f}, // 1

View File

@ -1,7 +1,6 @@
#pragma once #pragma once
#include "../Graphics/Memory/Buffer.h" #include "../Graphics/Memory/Buffer.h"
#include "../Graphics/Memory/VertexArray.h" #include "../Graphics/Memory/VertexArray.h"
#include <vector>
namespace YoggieEngine { namespace YoggieEngine {

View File

@ -1,9 +1,4 @@
#pragma once #pragma once
#include "Primitives/Mesh.h"
#include "Primitives/Material.h"
#include "Primitives/Texture.h"
#include "../Scene/Scene.h"
namespace YoggieEngine { namespace YoggieEngine {
struct Renderable { struct Renderable {

View File

@ -3,8 +3,6 @@
#include "../Scene/Components.h" #include "../Scene/Components.h"
#include "../Graphics/Memory/VertexArray.h" #include "../Graphics/Memory/VertexArray.h"
#include "../Graphics/Memory/Buffer.h" #include "../Graphics/Memory/Buffer.h"
#include <glad/glad.h>
#include <glm/gtc/type_precision.hpp>
namespace YoggieEngine { namespace YoggieEngine {
float Angle = 0.0; float Angle = 0.0;

View File

@ -1,16 +1,12 @@
#pragma once #pragma once
#include <vector>
#include <iostream>
#include <glm/gtc/matrix_transform.hpp>
#include "glad/glad.h"
#include "GLFW/glfw3.h" #include "GLFW/glfw3.h"
#include "../PerfCounter.h" #include "../PerfCounter.h"
#include "Primitives/Camera.h"
#include "Renderable.h" #include "Renderable.h"
#include "Memory/Framebuffer.h" #include "Memory/Framebuffer.h"
#include "../Scene/Components.h" #include "../Scene/Components.h"
#include"../Scene/Scene.h"
namespace YoggieEngine { namespace YoggieEngine {

View File

@ -1,7 +1,6 @@
#include <YoggieEngine.h> #include <YoggieEngine.h>
#include "PerfCounter.h" #include "PerfCounter.h"
#include <imgui.h>
#include <iostream>
namespace YoggieEngine { namespace YoggieEngine {
uint64_t EngineInstrumentation::GetPrecisionTime() { uint64_t EngineInstrumentation::GetPrecisionTime() {
using namespace std::chrono; // REMINDER: This is kinda ugly but safes line width using namespace std::chrono; // REMINDER: This is kinda ugly but safes line width

View File

@ -1,10 +1,5 @@
#pragma once #pragma once
#include "YoggieEngine.h" #include "YoggieEngine.h"
#include <string>
#include <vector>
#include <chrono>
namespace YoggieEngine { namespace YoggieEngine {
struct EngineStatistics { struct EngineStatistics {
float frameTime; float frameTime;

View File

@ -38,7 +38,7 @@ namespace YoggieEngine {
glfwMakeContextCurrent(window); glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
printf("Failed to initialize GLAD!\n"); spdlog::error("Failed to initialize GLAD!\n");
exit(-1); exit(-1);
} }

View File

@ -1,14 +1,8 @@
#pragma once #pragma once
#define GLFW_STATIC #define GLFW_STATIC
#include <glad/glad.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream> #include <iostream>
#include <GLFW/glfw3.h> #include <GLFW/glfw3.h>
#include <spdlog/spdlog.h>
#include "../EventSystem/Event.h" #include "../EventSystem/Event.h"
#include "../EventSystem/EventListener.h" #include "../EventSystem/EventListener.h"

View File

@ -1,8 +1,4 @@
#pragma once #pragma once
#include <glm/glm.hpp>
#include "../Graphics/Primitives/Shader.h"
#include "../Graphics/Primitives/Mesh.h"
namespace YoggieEngine { namespace YoggieEngine {
struct IdentifierComponent { struct IdentifierComponent {
std::string name; std::string name;

View File

@ -1,6 +1,4 @@
#pragma once #pragma once
#include <entt/entt.hpp>
namespace YoggieEngine { namespace YoggieEngine {
class Scene; class Scene;
class Entity { class Entity {

View File

@ -1,7 +1,4 @@
#pragma once #pragma once
#include <string>
#include <entt/entt.hpp>
namespace YoggieEngine { namespace YoggieEngine {
class Entity; class Entity;
class Scene class Scene

View File

@ -1,7 +1,4 @@
#pragma once #pragma once
#include <string>
#include <vector>
namespace YoggieEngine { namespace YoggieEngine {
class Node { class Node {
public: public:

View File

@ -1,6 +1,4 @@
#pragma once #pragma once
#include "../../Graphics/Primitives/Camera.h"
#include "../../Graphics/Renderable.h" #include "../../Graphics/Renderable.h"
#include "Node.h" #include "Node.h"

View File

@ -1,15 +1,4 @@
#pragma once #pragma once
#include <string>
extern "C"
{
#include "lauxlib.h"
#include "lua.h"
#include "lualib.h"
}
#include "LuaScriptingManager.h" #include "LuaScriptingManager.h"

View File

@ -1,15 +1,4 @@
#pragma once #pragma once
#include <vector>
extern "C"
{
#include "lauxlib.h"
#include "lua.h"
#include "lualib.h"
}
#include "LuaScript.h" #include "LuaScript.h"
/* /*

View File

@ -1,17 +1,42 @@
#pragma once #pragma once
#include <glad/glad.h>
#include "glm/glm.hpp"
// Important STL
#include <string>
#include <list>
#include <iostream>
#include <fstream>
#include <vector>
#include <stdlib.h>
#include <memory>
#include <chrono>
// Important libraries
#include "spdlog/spdlog.h"
#include <glad/glad.h>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <imgui.h>
#include <entt/entt.hpp>
extern "C"
{
#include "lauxlib.h"
#include "lua.h"
#include "lualib.h"
}
// Main library stuff
#include "Platform/Window.h" #include "Platform/Window.h"
#include "Graphics/Primitives/Mesh.h"
#include "Graphics/Primitives/Shader.h" #include "Graphics/Primitives/Shader.h"
#include "Graphics/Primitives/Texture.h" #include "Graphics/Primitives/Texture.h"
#include "Graphics/Primitives/Camera.h" #include "Graphics/Primitives/Camera.h"
#include "Graphics/Primitives/Material.h" #include "Graphics/Primitives/Material.h"
#include "Graphics/Renderer.h" #include "Graphics/Renderer.h"
#include "spdlog/spdlog.h"
#include "EventSystem/EventEmitter.h" #include "EventSystem/EventEmitter.h"
#include "EventSystem/EventListener.h" #include "EventSystem/EventListener.h"