Before adding new layer popping mechanisms

This commit is contained in:
Erris
2026-01-21 23:00:57 +01:00
parent 9c41714b96
commit 14134c7d2f
6 changed files with 443 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
#include "open_engine/core.hpp"
#include <sandbox2d.hpp>
#include <sandbox.hpp>
#include <control_layer.hpp>
ControlLayer::ControlLayer(OpenEngine::Ref<OpenEngine::Layer> layer)
: active_layer(layer), OpenEngine::Layer("control_layer")
{
}
void ControlLayer::OnUpdate()
{
}
bool ControlLayer::SwitchLayer(OpenEngine::KeyPressedEvent& event)
{
auto& app = OpenEngine::Application::Get();
OpenEngine::Ref<Layer> layer;
if (event.GetKeyCode() == OE_KEY_1) {
OE_DEBUG("Sandbox2D Layer");
layer = OpenEngine::CreateRef<Sandbox2DLayer>();
app.PushLayer(layer);
app.PopLayer(active_layer);
active_layer = layer;
return true;
} else if (event.GetKeyCode() == OE_KEY_2) {
OE_DEBUG("Sandbox Layer");
layer = OpenEngine::CreateRef<SandboxLayer>();
app.PushLayer(layer);
app.PopLayer(active_layer);
active_layer = layer;
return true;
}
return false;
}
bool ControlLayer::StopRunning(OpenEngine::KeyPressedEvent& event)
{
if (event.GetKeyCode() == OE_KEY_ESCAPE) {
OpenEngine::Application::Get().StopRunning();
return true;
}
return false;
}
void ControlLayer::OnEvent(OpenEngine::Event& event)
{
OpenEngine::EventDispatcher dispatcher(event);
dispatcher.Dispatch<OpenEngine::KeyPressedEvent>(BIND_EVENT_FN(ControlLayer::SwitchLayer));
dispatcher.Dispatch<OpenEngine::KeyPressedEvent>(BIND_EVENT_FN(ControlLayer::StopRunning));
}
void ControlLayer::OnImGuiRender()
{
}
void ControlLayer::OnAttach()
{
}
void ControlLayer::OnDetach()
{
}