Modified layers and layerstack system

main
Ambigapathy Vinayak ago%!(EXTRA string=1 year)
parent 1698fd5176
commit e65aa30c31
  1. 15
      exemples/sandbox.cpp
  2. 6
      src/bakara/core/application.h
  3. 2
      src/bakara/core/layer.h
  4. 24
      src/bakara/core/layer_stack.cpp
  5. 4
      src/bakara/core/layer_stack.h
  6. 2
      src/bakara/imgui/imgui_layer.h

@ -3,10 +3,6 @@
#include <string>
#include <bakara.h>
#include <bakara/events/events.h>
//USE THE FUCKING NAMESPACE OR BREAK
class TestLayer : public Bk::Layer
{
public:
@ -40,20 +36,9 @@ class Sandbox : public Bk::Application
Sandbox()
{
push_layer(new TestLayer());
push_layer(new TestLayer());
std::unique_ptr<Bk::Layer> layer = pop_overlay();
BK_INFO("Layer retirer et récupérer {0}", layer->to_string());
}
~Sandbox()
{
}
};
std::unique_ptr<Bk::Application> Bk::create_app() {
return std::unique_ptr<Bk::Application>(new Sandbox());
}

@ -50,9 +50,8 @@ namespace Bk {
inline void push_overlay(Layer* layer) { p_layer_stack.push_overlay(layer); }
/*! \fn Bk::Application::pop_overlay
Pop's the layer on top of the layer stack
@return a unique ptr to the layer ressource
*/
inline std::unique_ptr<Layer> pop_overlay() { return p_layer_stack.pop_overlay(); }
inline void pop_overlay() { p_layer_stack.pop_overlay(); }
/*! \fn Bk::Application::push_overlay
Push's the layer at the bottom of the layer stack
@param layer : Layer pointer to push
@ -60,9 +59,8 @@ namespace Bk {
inline void push_layer(Layer* layer) { p_layer_stack.push_layer(layer); }
/*! \fn Bk::Application::push_overlay
Pop's the layer at the bottom of the layer stack
@return a unique ptr to the layer ressource
*/
inline std::unique_ptr<Layer> pop_layer() { return p_layer_stack.pop_layer(); }
inline void pop_layer() { p_layer_stack.pop_layer(); }
/*! \fn Bk::Application::run
Starts the application and the update loop.

@ -7,7 +7,7 @@ namespace Bk {
{
public:
Layer(const std::string& name = "Layer");
virtual ~Layer() {}
~Layer() {}
virtual void on_attach() {}
virtual void on_detach() {}

@ -3,12 +3,7 @@
namespace Bk {
LayerStack::~LayerStack()
{
std::for_each(p_layers.begin(), p_layers.end(), [](Layer* layer)
{
layer->on_detach();
delete layer;
});
p_layers.clear();
clear();
}
void LayerStack::push_overlay(Layer* layer)
@ -17,14 +12,14 @@ namespace Bk {
p_layers.emplace_back(layer);
}
std::unique_ptr<Layer> LayerStack::pop_overlay()
void LayerStack::pop_overlay()
{
if(auto layer = p_layers.back())
{
layer->on_detach();
p_layers.pop_back();
return std::make_unique<Layer>(*layer);
delete layer;
}
return nullptr;
}
void LayerStack::push_layer(Layer* layer)
@ -33,18 +28,23 @@ namespace Bk {
p_layers.emplace_front(layer);
}
std::unique_ptr<Layer> LayerStack::pop_layer()
void LayerStack::pop_layer()
{
if(auto layer = p_layers.front())
{
layer->on_detach();
p_layers.pop_front();
return std::make_unique<Layer>(*layer);
delete layer;
}
return nullptr;
}
void LayerStack::clear()
{
std::for_each(p_layers.begin(), p_layers.end(), [](Layer* layer)
{
layer->on_detach();
delete layer;
});
p_layers.clear();
}
}

@ -11,9 +11,9 @@ namespace Bk {
~LayerStack();
void push_overlay(Layer* layer);
std::unique_ptr<Layer> pop_overlay();
void pop_overlay();
void push_layer(Layer* layer);
std::unique_ptr<Layer> pop_layer();
void pop_layer();
void clear();
std::deque<Layer*>::iterator begin() { return p_layers.begin(); }

@ -13,8 +13,6 @@ namespace Bk {
ImguiLayer()
: Layer("Imgui") {}
~ImguiLayer() = default;
void on_attach() override;
void on_detach() override;
void on_event(Bk::Event& e) override;

Loading…
Cancel
Save