2021-08-21 18:02:53 +02:00
|
|
|
#pragma once
|
2021-09-23 10:10:39 +02:00
|
|
|
#include "Elements/Element.h"
|
2021-08-21 18:02:53 +02:00
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
|
|
|
|
namespace UI
|
|
|
|
|
{
|
2021-09-23 10:10:39 +02:00
|
|
|
DECLARE_NAME_REF(Gfx, RenderCommand);
|
|
|
|
|
class RenderElement
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
RenderElement();
|
|
|
|
|
virtual ~RenderElement();
|
|
|
|
|
private:
|
2021-09-29 22:12:56 +02:00
|
|
|
uint32 hierarchyIndex;
|
|
|
|
|
RenderElement* parent;
|
2021-09-23 10:10:39 +02:00
|
|
|
PElement referencedElement;
|
|
|
|
|
Gfx::PRenderCommand renderCommand;
|
|
|
|
|
friend class RenderHierarchy;
|
|
|
|
|
};
|
2021-09-29 22:12:56 +02:00
|
|
|
|
|
|
|
|
struct RenderHierarchyUpdate
|
|
|
|
|
{};
|
|
|
|
|
DEFINE_REF(RenderHierarchyUpdate)
|
|
|
|
|
|
|
|
|
|
|
2021-08-21 18:02:53 +02:00
|
|
|
class RenderHierarchy
|
|
|
|
|
{
|
|
|
|
|
public:
|
2021-09-23 10:10:39 +02:00
|
|
|
RenderHierarchy();
|
|
|
|
|
~RenderHierarchy();
|
2021-09-29 22:12:56 +02:00
|
|
|
|
2021-08-21 18:02:53 +02:00
|
|
|
private:
|
2021-09-29 22:12:56 +02:00
|
|
|
void updateHierarchyIndices();
|
|
|
|
|
|
2021-09-23 10:10:39 +02:00
|
|
|
// List of all drawable elements in draw order
|
|
|
|
|
Array<RenderElement> drawElements;
|
2021-08-21 18:02:53 +02:00
|
|
|
};
|
|
|
|
|
} // namespace UI
|
|
|
|
|
} // namespace Seele
|