CoriEngine
Loading...
Searching...
No Matches
LayerStack.hpp
Go to the documentation of this file.
1#pragma once
2#include "Layer.hpp"
3
4namespace Cori {
5 namespace Core {
9 class LayerStack {
10 friend class Application;
11 LayerStack();
12 ~LayerStack();
13
14 void PushLayer(Layer* layer);
15 void PushOverlay(Layer* overlay);
16 void PopLayer();
17 void PopOverlay();
18
19 std::expected<void, CoriError<>> PushLayerToQueue(Layer* layer);
20 std::expected<void, CoriError<>> PushOverlayToQueue(Layer* overlay);
21 void PopLayerToQueue();
22 void PopOverlayToQueue();
23
24 void ProcessQueue();
25
26 void ClearStack();
27
28 std::vector<Layer*>::iterator begin() { return m_Layers.begin(); }
29 std::vector<Layer*>::iterator end() { return m_Layers.end(); }
30 std::vector<Layer*>::reverse_iterator rbegin() { return m_Layers.rbegin(); }
31 std::vector<Layer*>::reverse_iterator rend() { return m_Layers.rend(); }
32
33 std::vector<Layer*> m_Layers;
34
35 std::vector<Layer*> m_LayerPushQueue;
36 uint32_t m_LayerPopQueue{ 0 };
37 std::vector<Layer*> m_OverlayPushQueue;
38 uint32_t m_OverlayPopQueue{ 0 };
39
40 uint32_t m_LayerInsertIndex{ 0 }; // also a regular layer count
41 uint32_t m_OverlayLayerCount{ 0 };
42
43 std::vector<Layer*>::iterator m_LayerInsert{ m_Layers.begin() };
44 };
45 }
46}
friend class Application
An abstract class that is ment to be used as a template for defining layers.
Definition Layer.hpp:13
Core systems of the engine are here.
Global engine namespace.