8#include "LkEngine/Core/LObject/ObjectPtr.h"
10#include "LkEngine/Core/Delegate/Delegate.h"
22 LK_DECLARE_MULTICAST_DELEGATE(FOnViewportSizeUpdated,
const uint16_t,
const uint16_t);
49 FORCEINLINE
void SetSize(
const LVector2& NewSize)
58 FORCEINLINE
void SetSize(
const float InX,
const float InY)
60 if ((Size.X != InX) || (Size.Y != InY))
69 FORCEINLINE
void SetSizeX(
const T InX)
71 static_assert(std::is_floating_point_v<T>,
"Invalid type, cannot set size");
80 FORCEINLINE
void SetSizeY(
const T InY)
82 static_assert(std::is_floating_point_v<T>,
"Invalid type, cannot set size");
95 if (Position != NewPosition)
97 Position = NewPosition;
106 Position.X = NewPosX;
115 Position.Y = NewPosY;
124 LK_CORE_ASSERT((Index >= 0) && (Index <= 1),
"Invalid viewport index: {}", Index);
125 if (PrimaryViewportBounds[Index] != Bounds)
127 PrimaryViewportBounds[Index] = Bounds;
138 LK_CORE_ASSERT((Index >= 0) && (Index <= 1),
"Invalid viewport index: {}", Index);
139 if (PrimaryViewportBounds[Index].X != Bound)
141 PrimaryViewportBounds[Index].X = Bound;
152 LK_CORE_ASSERT((Index >= 0) && (Index <= 1),
"Invalid viewport index: {}", Index);
153 if (PrimaryViewportBounds[Index].Y != Bound)
155 PrimaryViewportBounds[Index].Y = Bound;
166 return PrimaryViewportBounds.data();
171 LK_VERIFY((Index >= 0) && (Index <= 1),
"Invalid viewport index");
172 return PrimaryViewportBounds[Index];
177 LK_VERIFY((Index >= 0) && (Index <= 1),
"Invalid viewport index");
178 return PrimaryViewportBounds[Index];
181 FORCEINLINE
void SetScalers(
const LVector2& NewScalers)
183 if (!NewScalers.IsNull() && (Scalers != NewScalers))
185 Scalers = NewScalers;
197 static void SetViewport(
const int PosX,
const int PosY,
const int Width,
const int Height);
200 FOnViewportSizeUpdated OnSizeUpdated;
203 TVector2<uint16_t> Position = { 0.0f, 0.0f };
204 TVector2<float> Scalers = { 1.0f, 1.0f };
206 std::array<LVector2, 2> PrimaryViewportBounds = {
Mathematics used by the engine.
FORCEINLINE const LVector2 * GetViewportBounds() const
Return viewport bounds array.
Definition Viewport.h:164
void Update()
Update the viewport.
Definition Viewport.cpp:16
FORCEINLINE LVector2 GetScalers() const
Get the viewport scalers.
Definition Viewport.h:47
FORCEINLINE LVector2 GetSize() const
Get viewport size.
Definition Viewport.h:37
FORCEINLINE void SetViewportBoundsX(const uint8_t Index, const float Bound)
Set viewport bounds on the X axis for top-left or bottom-right bound.
Definition Viewport.h:136
FORCEINLINE void SetPositionY(const float NewPosY)
Sey position in the Y-axis.
Definition Viewport.h:113
FORCEINLINE void SetViewportBounds(const uint8_t Index, const LVector2 &Bounds)
Definition Viewport.h:122
FORCEINLINE void SetPosition(const LVector2 &NewPosition)
Set viewport position.
Definition Viewport.h:93
FORCEINLINE void SetViewportBoundsY(const uint8_t Index, const float Bound)
Set viewport bounds on the Y axis for top-left or bottom-right bound.
Definition Viewport.h:150
FORCEINLINE void SetDirty(const bool Dirty)
Set the viewport as dirty.
Definition Viewport.h:192
FORCEINLINE LVector2 GetPosition() const
Get viewport position.
Definition Viewport.h:42
FORCEINLINE void SetPositionX(const float NewPosX)
Sey position in the X-axis.
Definition Viewport.h:104
#define LCLASS(Class)
Definition CoreMacros.h:226
TVector2< float > LVector2
Definition Vector.h:48