PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
LayerStack.hpp
1#pragma once
2
3#include <algorithm>
4#include <memory>
5#include <ranges>
6#include <vector>
7
8namespace PixelBullet
9{
10 class Layer;
11
13 {
14 public:
15 LayerStack() = default;
17
18 void PushLayer(std::unique_ptr<Layer> layer);
19 void PushOverlay(std::unique_ptr<Layer> overlay);
20 void PopLayer(Layer* layer);
21 void PopOverlay(Layer* overlay);
22
23 const std::vector<std::unique_ptr<Layer>>& GetLayers() const
24 {
25 return m_Layers;
26 }
27 std::vector<std::unique_ptr<Layer>>& GetLayers()
28 {
29 return m_Layers;
30 }
31
32 auto Reversed() const
33 {
34 return std::views::reverse(m_Layers) | std::views::transform([](const auto& uptr) { return uptr.get(); });
35 }
36
37 private:
38 std::vector<std::unique_ptr<Layer>> m_Layers;
39 unsigned int m_LayerInsertIndex = 0;
40 };
41} // namespace PixelBullet
Definition LayerStack.hpp:13
Definition Layer.hpp:14