#ifndef SANDBOX2D_HPP #define SANDBOX2D_HPP #include #include #include "imgui.h" #include #include class Sandbox2DLayer : public OpenEngine::Layer { public: Sandbox2DLayer() : OpenEngine::Layer("sandbox_2d"), camera((float)OpenEngine::Application::Get().GetWindow().GetWidth() / OpenEngine::Application::Get().GetWindow().GetHeight(), 1.0f) { } ~Sandbox2DLayer() {}; void OnAttach() override { bindings = { {"fwd/bckwd", 1}, {"right/left", 0}, {"yaw", 2} }; face = OpenEngine::Texture2D::Create("assets/textures/awesomeface.png"); } void OnDetach() override { } void OnUpdate() override { OpenEngine::RenderCommand::SetClearColor({0.11f, 0.11f, 0.15f, 1.0f}); OpenEngine::RenderCommand::Clear(); OpenEngine::Renderer2D::BeginScene(camera.GetCamera()); OpenEngine::Renderer2D::DrawQuad(glm::vec2(0.5f, 0.5f), glm::vec2(0.3f), glm::vec4(color[0], color[1], color[2], color[3])); OpenEngine::Renderer2D::DrawQuad(glm::vec2(-0.2f, -0.2f), glm::vec2(0.5f, 0.2f), {0.5f, 0.3f, 0.8f, 1.0f}); OpenEngine::Renderer2D::DrawQuad(glm::vec3(0.0f, 0.0f, -0.1f), glm::vec2(1.0f, 1.0f), face); OpenEngine::Renderer2D::EndScene(); } bool StopRunning(OpenEngine::KeyPressedEvent& event) { if (event.GetKeyCode() == OE_KEY_ESCAPE) { OpenEngine::Application::Get().StopRunning(); return true; } return false; } void OnEvent(OpenEngine::Event& event) override { OpenEngine::EventDispatcher dispatcher(event); //dispatcher.Dispatch(BIND_EVENT_FN(Sandbox2DLayer::StopRunning)); camera.OnEvent(event); } void OnImGuiRender() override { ImGui::Begin("Square settings"); ImGui::ColorEdit4("Square color", color); ImGui::End(); } private: //OpenEngine::ShaderLibrary shader_library; glm::vec3 square_pos = glm::vec3(0.0f); glm::vec4 square_color = glm::vec4(1.0f); float color[4] = {0.5f, 0.3f, 0.4f, 1.0f}; OpenEngine::Ref face; std::unordered_map bindings; OpenEngine::OrthographicCameraController camera = {1280.0f / 1440.0f, 1.0f}; }; #endif // SANDBOX2D_HPP