Vesper 0.5.1
Vesper is short form for the Latin word for "Bat", as Vesper is designed to be small, lightweight, and easily handle things like particles and flocking behaviors in accordance with the nature of bats. \n It is meant to be a particle simulation, VFX editor, and CAN be used secondarily as a small game engine.
GitHub | Vesper Updates | Creator
Loading...
Searching...
No Matches
Vesper::LayerStack Class Reference

Manages an ordered stack of Layer pointers. Layers can be pushed or popped and the stack can be iterated in forward or reverse order. More...

#include <LayerStack.h>

Public Member Functions

 LayerStack ()
 ~LayerStack ()
void PushLayer (Layer *layer)
 Adds the layer to the stack at the position before the first overlay.
void PushOverlay (Layer *overlay)
 Pushes the overlay layer on top of all other layers.
void PopLayer (Layer *layer)
 Removes the specified layer from the stack.
void PopOverlay (Layer *overlay)
 Removes the specified overlay layer from the stack.
std::vector< Layer * >::iterator begin ()
 Returns an iterator to the beginning of the layer stack.
std::vector< Layer * >::iterator end ()
 Returns an iterator to the end of the layer stack.
std::vector< Layer * >::reverse_iterator rbegin ()
 Returns a reverse iterator to the beginning of the layer stack.
std::vector< Layer * >::reverse_iterator rend ()
 Returns a reverse iterator to the end of the layer stack.

Private Attributes

std::vector< Layer * > m_Layers
 Vector holding pointers to the layers in the stack.
unsigned int m_LayerInsertIndex = 0
 Index indicating where to insert new layers (before overlays).

Detailed Description

Manages an ordered stack of Layer pointers. Layers can be pushed or popped and the stack can be iterated in forward or reverse order.

Todo
Add layer priority system (maybe?)

Constructor & Destructor Documentation

◆ LayerStack()

Vesper::LayerStack::LayerStack ( )
7 {
8 }

◆ ~LayerStack()

Vesper::LayerStack::~LayerStack ( )
11 {
12 for (Layer* layer : m_Layers)
13 {
14 layer->OnDetach();
15 delete layer;
16 }
17 }
std::vector< Layer * > m_Layers
Vector holding pointers to the layers in the stack.
Definition LayerStack.h:53

Member Function Documentation

◆ begin()

std::vector< Layer * >::iterator Vesper::LayerStack::begin ( )
inline

Returns an iterator to the beginning of the layer stack.

42{ return m_Layers.begin(); }

◆ end()

std::vector< Layer * >::iterator Vesper::LayerStack::end ( )
inline

Returns an iterator to the end of the layer stack.

44{ return m_Layers.end(); }

◆ PopLayer()

void Vesper::LayerStack::PopLayer ( Layer * layer)

Removes the specified layer from the stack.

Parameters
layerPointer to the layer to be removed.
33 {
35 auto it = std::find(m_Layers.begin(), m_Layers.end(), layer);
36 if (it != m_Layers.end())
37 {
38 m_Layers.erase(it);
40 }
41 }
#define VZ_PROFILE_FUNCTION()
Definition Instrumentor.h:240
unsigned int m_LayerInsertIndex
Index indicating where to insert new layers (before overlays).
Definition LayerStack.h:55

References m_LayerInsertIndex.

◆ PopOverlay()

void Vesper::LayerStack::PopOverlay ( Layer * overlay)

Removes the specified overlay layer from the stack.

Parameters
overlayPointer to the overlay layer to be removed.
43 {
45 auto it = std::find(m_Layers.begin(), m_Layers.end(), overlay);
46 if (it != m_Layers.end())
47 {
48 m_Layers.erase(it);
49 }
50 }

◆ PushLayer()

void Vesper::LayerStack::PushLayer ( Layer * layer)

Adds the layer to the stack at the position before the first overlay.

Parameters
layerPointer to the layer to be added.
20 {
22 m_Layers.emplace(m_Layers.begin() + m_LayerInsertIndex, layer);
24 }

References m_LayerInsertIndex.

◆ PushOverlay()

void Vesper::LayerStack::PushOverlay ( Layer * overlay)

Pushes the overlay layer on top of all other layers.

Parameters
overlayPointer to the overlay layer to be added.
27 {
29 m_Layers.emplace_back(overlay);
30 }

◆ rbegin()

std::vector< Layer * >::reverse_iterator Vesper::LayerStack::rbegin ( )
inline

Returns a reverse iterator to the beginning of the layer stack.

46{ return m_Layers.rbegin(); }

◆ rend()

std::vector< Layer * >::reverse_iterator Vesper::LayerStack::rend ( )
inline

Returns a reverse iterator to the end of the layer stack.

48{ return m_Layers.rend(); }

Member Data Documentation

◆ m_LayerInsertIndex

unsigned int Vesper::LayerStack::m_LayerInsertIndex = 0
private

Index indicating where to insert new layers (before overlays).

Referenced by PopLayer(), and PushLayer().

◆ m_Layers

std::vector<Layer*> Vesper::LayerStack::m_Layers
private

Vector holding pointers to the layers in the stack.


The documentation for this class was generated from the following files: