Plasma Engine  2.0
Loading...
Searching...
No Matches
TexturePacker.h
1#pragma once
2
3#include <Foundation/Containers/DynamicArray.h>
4#include <Foundation/Math/Vec2.h>
5#include <Texture/TextureDLL.h>
6
7class PL_TEXTURE_DLL plTexturePacker
8{
9public:
10 struct Texture
11 {
12 PL_DECLARE_POD_TYPE();
13
14 plVec2U32 m_Size;
15 plVec2U32 m_Position;
16 plInt32 m_Priority = 0;
17 };
18
21
22 void SetTextureSize(plUInt32 uiWidth, plUInt32 uiHeight, plUInt32 uiReserveTextures = 0);
23
24 void AddTexture(plUInt32 uiWidth, plUInt32 uiHeight);
25
26 const plDynamicArray<Texture>& GetTextures() const { return m_Textures; }
27
28 plResult PackTextures();
29
30private:
31 bool CanPlaceAt(plVec2U32 pos, plVec2U32 size);
32 bool TryPlaceAt(plVec2U32 pos, plVec2U32 size);
33 plUInt32 PosToIndex(plUInt32 x, plUInt32 y) const;
34 bool TryPlaceTexture(plUInt32 idx);
35
36 plUInt32 m_uiWidth = 0;
37 plUInt32 m_uiHeight = 0;
38
39 plDynamicArray<Texture> m_Textures;
41};
Definition DynamicArray.h:81
Definition TexturePacker.h:8
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
Definition TexturePacker.h:11