Zen 0.3.0
Loading...
Searching...
No Matches
ZEN_LayerList.h
1#pragma once
2
3#include <zen/core/ZEN_Core.h>
4#include <zen/layer/ZEN_Layer.h>
5#include <zen/zen_pch.h>
6
7namespace Zen {
8 class LayerList {
9 public:
10 using ListOfLayers = std::vector<std::unique_ptr<Layer>>;
11
12 LayerList() = default;
13 ~LayerList();
14
15 void pushLayer(std::unique_ptr<Layer> layer);
16 void pushOverlay(std::unique_ptr<Layer> overlay);
17
18 void pushLayer(Layer *layer);
19 void pushOverlay(Layer *overlay);
20
21 void popLayer(Layer *layer);
22 void popOverlay(Layer *overlay);
23
24 ListOfLayers::iterator begin() { return m_layers.begin(); }
25 ListOfLayers::iterator end() { return m_layers.end(); }
26 ListOfLayers::reverse_iterator rbegin() { return m_layers.rbegin(); }
27 ListOfLayers::reverse_iterator rend() { return m_layers.rend(); }
28
29 ListOfLayers::const_iterator begin() const { return m_layers.begin(); }
30 ListOfLayers::const_iterator end() const { return m_layers.end(); }
31 ListOfLayers::const_reverse_iterator rbegin() const { return m_layers.rbegin(); }
32 ListOfLayers::const_reverse_iterator rend() const { return m_layers.rend(); }
33
34 private:
35 ListOfLayers m_layers;
36 size_t m_layerInsertIndex = 0;
37 };
38}; // namespace Zen