made the editor work by debugging on windows

This commit is contained in:
2026-01-18 16:49:45 +01:00
parent b73d09f09f
commit 23e7707122
11 changed files with 41 additions and 32 deletions

View File

@@ -163,7 +163,7 @@ void TSE::Texture::SetChanels(const byte &ch)
chanels = ch; chanels = ch;
} }
uint TSE::Texture::GetTextureId() const TSE::uint TSE::Texture::GetTextureId() const
{ {
return TextureID; return TextureID;
} }

View File

@@ -2,10 +2,10 @@
#include "BehaviourScriptRegistry.hpp" #include "BehaviourScriptRegistry.hpp"
TSE::EDITOR::EditorSubsystem::EditorSubsystem() : sv(nullptr), rt({10,10}), editorLayer("") TSE::EDITOR::EditorSubsystem::EditorSubsystem() : sv(nullptr), editorLayer("")
{ {
rt = TSE::GLFW::RenderTexture({100,100}); rt = new TSE::GLFW::RenderTexture({100,100});
sv = SceneView(&rt); sv = SceneView(rt);
controller.AddGuiElement("Scene", &sv); controller.AddGuiElement("Scene", &sv);
controller.AddGuiElement("Consol", &cv); controller.AddGuiElement("Consol", &cv);
@@ -27,7 +27,7 @@ TSE::EDITOR::EditorSubsystem::EditorSubsystem() : sv(nullptr), rt({10,10}), edit
Transformable* editorCamera = new Transformable(".EditorCamera"); Transformable* editorCamera = new Transformable(".EditorCamera");
Camera* editorCam = new Camera(); Camera* editorCam = new Camera();
editorCam->SetRenderTarget(&rt); editorCam->SetRenderTarget(rt);
editorCamera->AddBehaviourScript(editorCam); editorCamera->AddBehaviourScript(editorCam);
// basicCameraControls controls = basicCameraControls(); // basicCameraControls controls = basicCameraControls();

View File

@@ -20,7 +20,7 @@ namespace TSE::EDITOR
HirearchieView hv = HirearchieView(nullptr); HirearchieView hv = HirearchieView(nullptr);
PropertiesView pv; PropertiesView pv;
CameraView camv; CameraView camv;
TSE::GLFW::RenderTexture rt; TSE::GLFW::RenderTexture* rt;
SceneView sv; SceneView sv;
Layer editorLayer; Layer editorLayer;

View File

@@ -1,6 +1,6 @@
#include "ViewportController.hpp" #include "ViewportController.hpp"
#include "imgui/imgui.h" #include "imgui/imgui.h"
#include <chrono>
extern "C" { extern "C" {
#include "tinyfiledialogs.h" #include "tinyfiledialogs.h"

View File

@@ -1,7 +1,9 @@
#include "CameraView.hpp" #include "CameraView.hpp"
TSE::EDITOR::CameraView::CameraView() : GuiWindow("Camera", ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar) TSE::EDITOR::CameraView::CameraView() : GuiWindow("Camera", ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)
, fb({100,100}) { } {
fb = new TSE::GLFW::RenderTexture({100,100});
}
void TSE::EDITOR::CameraView::Define() void TSE::EDITOR::CameraView::Define()
{ {
@@ -11,18 +13,17 @@ void TSE::EDITOR::CameraView::Define()
currentCamera->SetRenderTarget(nullptr); currentCamera->SetRenderTarget(nullptr);
currentCamera = Camera::mainCamera; currentCamera = Camera::mainCamera;
if(currentCamera != nullptr) if(currentCamera != nullptr)
currentCamera->SetRenderTarget(&fb); currentCamera->SetRenderTarget(fb);
} }
ImGuiWindowFlags flags2 = ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar; ImGuiWindowFlags flags2 = ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar;
if(ImGui::BeginChild("##SceneChild", {0,0}, ImGuiChildFlags_None, flags2)) if(ImGui::BeginChild("##SceneChild", {0,0}, ImGuiChildFlags_None, flags2))
{ {
float w = fb.width(); ImGui::Image(fb->GetTextureId(), {fb->width(), fb->height()},{0,1}, {1,0});
ImGui::Image(fb.GetTextureId(), {fb.width(), fb.height()},{0,1}, {1,0});
auto vec2 = ImGui::GetWindowSize(); auto vec2 = ImGui::GetWindowSize();
if(fb.width() != vec2.x || fb.height() != vec2.y) if(fb->width() != vec2.x || fb->height() != vec2.y)
{ {
fb.SetSize({vec2.x, vec2.y}); fb->SetSize({vec2.x, vec2.y});
} }
} }
ImGui::EndChild(); ImGui::EndChild();

View File

@@ -10,7 +10,7 @@ namespace TSE::EDITOR
{ {
private: private:
Camera* currentCamera = nullptr; Camera* currentCamera = nullptr;
TSE::GLFW::RenderTexture fb; TSE::GLFW::RenderTexture* fb;
public: public:
CameraView(); CameraView();
void Define() override; void Define() override;

View File

@@ -10,6 +10,8 @@
#include "PathHelper.hpp" #include "PathHelper.hpp"
#include "elements/Texture.hpp" #include "elements/Texture.hpp"
#include "TextureHelperOpenGL.hpp" #include "TextureHelperOpenGL.hpp"
#include "interfaces/IRenderer.hpp"
#include "BehaviourScripts/Camera.hpp"
TSE::GLFW::OpenGLRenderingBackend::OpenGLRenderingBackend(Color _backgroundColor, bool _vsync) TSE::GLFW::OpenGLRenderingBackend::OpenGLRenderingBackend(Color _backgroundColor, bool _vsync)
: OpenGLRenderingBackend(_backgroundColor, _vsync, 0, false){ } : OpenGLRenderingBackend(_backgroundColor, _vsync, 0, false){ }
@@ -140,7 +142,13 @@ void TSE::GLFW::OpenGLRenderingBackend::onUpdate() const
void TSE::GLFW::OpenGLRenderingBackend::onClear() const void TSE::GLFW::OpenGLRenderingBackend::onClear() const
{ {
//cameras for (int i = 0; i < IRenderer::camerasToRenderWith.size(); i++)
{
IRenderer::camerasToRenderWith[i]->Bind();
IRenderer::camerasToRenderWith[i]->UpdateRenderTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
IRenderer::camerasToRenderWith[i]->Unbind();
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(useseImGui) if(useseImGui)
@@ -153,7 +161,12 @@ void TSE::GLFW::OpenGLRenderingBackend::onClear() const
void TSE::GLFW::OpenGLRenderingBackend::onClearDepthBuffer() const void TSE::GLFW::OpenGLRenderingBackend::onClearDepthBuffer() const
{ {
//cameras for (int i = 0; i < IRenderer::camerasToRenderWith.size(); i++)
{
IRenderer::camerasToRenderWith[i]->Bind();
glClear(GL_DEPTH_BUFFER_BIT);
IRenderer::camerasToRenderWith[i]->Unbind();
}
glClear(GL_DEPTH_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT);
} }

View File

@@ -25,7 +25,7 @@ float TSE::GLFW::RenderTexture::height() const
return buffer.GetSize().y; return buffer.GetSize().y;
} }
uint TSE::GLFW::RenderTexture::GetTextureId() const TSE::uint TSE::GLFW::RenderTexture::GetTextureId() const
{ {
return buffer.GetTextureId(); return buffer.GetTextureId();
} }

View File

@@ -3,7 +3,8 @@
TSE::GLFW::FrameBuffer::FrameBuffer(const Vector2 &size) TSE::GLFW::FrameBuffer::FrameBuffer(const Vector2 &size)
{ {
this->size = size; width = size.x;
height = size.y;
CreateFBTexture(); CreateFBTexture();
for (auto const& i : objectsToResize) for (auto const& i : objectsToResize)
{ {
@@ -14,16 +15,12 @@ TSE::GLFW::FrameBuffer::FrameBuffer(const Vector2 &size)
void TSE::GLFW::FrameBuffer::Bind() void TSE::GLFW::FrameBuffer::Bind()
{ {
glBindRenderbuffer(GL_RENDERBUFFER, depthRboID);
glBindTexture(GL_TEXTURE_2D, textureID);
glBindFramebuffer(GL_FRAMEBUFFER, bufferID); glBindFramebuffer(GL_FRAMEBUFFER, bufferID);
} }
void TSE::GLFW::FrameBuffer::Unbind() void TSE::GLFW::FrameBuffer::Unbind()
{ {
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
} }
TSE::GLFW::FrameBuffer::~FrameBuffer() TSE::GLFW::FrameBuffer::~FrameBuffer()
@@ -35,7 +32,8 @@ TSE::GLFW::FrameBuffer::~FrameBuffer()
void TSE::GLFW::FrameBuffer::Resize(Vector2 size) void TSE::GLFW::FrameBuffer::Resize(Vector2 size)
{ {
this->size = size; width = size.x;
height = size.y;
shouldResize = true; shouldResize = true;
} }
@@ -46,7 +44,7 @@ void TSE::GLFW::FrameBuffer::Update()
CreateFBTexture(); CreateFBTexture();
for (auto const& i : objectsToResize) for (auto const& i : objectsToResize)
{ {
i->OnResize(size.x, size.y, this); i->OnResize(width, height, this);
} }
} }
@@ -57,7 +55,7 @@ TSE::uint TSE::GLFW::FrameBuffer::GetTextureId() const
TSE::Vector2 TSE::GLFW::FrameBuffer::GetSize() const TSE::Vector2 TSE::GLFW::FrameBuffer::GetSize() const
{ {
return size; return {width, height};
} }
void TSE::GLFW::FrameBuffer::Initialize() void TSE::GLFW::FrameBuffer::Initialize()
@@ -73,14 +71,12 @@ void TSE::GLFW::FrameBuffer::Initialize()
TSE_LOG(std::to_string(glGetError())); TSE_LOG(std::to_string(glGetError()));
} }
Unbind(); Unbind();
glBindTexture(GL_TEXTURE_2D, 0);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
} }
void TSE::GLFW::FrameBuffer::LoadFBTexture() void TSE::GLFW::FrameBuffer::LoadFBTexture()
{ {
glBindTexture(GL_TEXTURE_2D, textureID); glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@@ -88,12 +84,12 @@ void TSE::GLFW::FrameBuffer::LoadFBTexture()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindRenderbuffer(GL_RENDERBUFFER, depthRboID); glBindRenderbuffer(GL_RENDERBUFFER, depthRboID);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, size.x, size.y); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
} }
void TSE::GLFW::FrameBuffer::CreateFBTexture() void TSE::GLFW::FrameBuffer::CreateFBTexture()
{ {
glViewport(0,0, size.x, size.y); glViewport(0,0, width, height);
//resize //resize
if(textureID == 0) if(textureID == 0)
glGenTextures(1, &textureID); glGenTextures(1, &textureID);

View File

@@ -11,7 +11,6 @@ namespace TSE::GLFW
private: private:
uint textureID = 0; uint textureID = 0;
uint depthRboID = 0; uint depthRboID = 0;
Vector2 size;
bool shouldResize = false; bool shouldResize = false;
public: public:

View File

@@ -14,7 +14,7 @@
#define SHADER_PACKAGE_SIZE (sizeof(float) * (3 + 4 + 2 + 1)) #define SHADER_PACKAGE_SIZE (sizeof(float) * (3 + 4 + 2 + 1))
TSE::GLFW::BasicTextureShader* TSE::GLFW::BasicTextureShader::instance = nullptr; TSE::GLFW::BasicTextureShader* TSE::GLFW::BasicTextureShader::instance = nullptr;
std::map<uint, float> TSE::GLFW::BasicTextureShader::textureSlots; std::map<TSE::uint, float> TSE::GLFW::BasicTextureShader::textureSlots;
TSE::GLFW::BasicTextureShader *TSE::GLFW::BasicTextureShader::Instance() TSE::GLFW::BasicTextureShader *TSE::GLFW::BasicTextureShader::Instance()
{ {