Add docking of main viewport

- Change ImGui branch to docking
- Rework code to handle viewport resizes instead of window resize
This commit is contained in:
Thraix
2023-07-13 23:41:20 +02:00
parent f9fb74ba6a
commit 65a86bd5a2
21 changed files with 143 additions and 89 deletions
@@ -3,7 +3,7 @@
#include "copium/ecs/System.h"
#include "copium/example/Components.h"
#include "copium/event/EventSignal.h"
#include "copium/event/WindowResizeEvent.h"
#include "copium/event/ViewportResize.h"
#include <glm/gtc/matrix_transform.hpp>
@@ -46,19 +46,19 @@ namespace Copium
const EventSignal& eventSignal = static_cast<const EventSignal&>(signal);
switch (eventSignal.GetEvent().GetType())
{
case EventType::WindowResize:
case EventType::ViewportResize:
{
const WindowResizeEvent& windowResizeEvent = static_cast<const WindowResizeEvent&>(eventSignal.GetEvent());
const ViewportResize& viewportResize = static_cast<const ViewportResize&>(eventSignal.GetEvent());
if (camera.uiCamera)
{
camera.projection.r = windowResizeEvent.GetWidth();
camera.projection.t = windowResizeEvent.GetHeight();
camera.projection.r = viewportResize.GetViewport().GetSize().x;
camera.projection.t = viewportResize.GetViewport().GetSize().y;
camera.projection.l = 0.0f;
camera.projection.b = 0.0f;
}
else
{
float aspect = windowResizeEvent.GetWidth() / (float)windowResizeEvent.GetHeight();
float aspect = viewportResize.GetViewport().GetSize().x / viewportResize.GetViewport().GetSize().y;
camera.projection.r = aspect;
camera.projection.l = -aspect;
}