#ifndef CHOCOLATE_CHOCOLATE_H #define CHOCOLATE_CHOCOLATE_H #include #include #include #include #include #include #include #include "Camera.h" #include "Materials.h" #include "UI.h" using namespace Magnum; using namespace Math::Literals; class Chocolate: public Platform::Application { public: virtual ~Chocolate() = default; explicit Chocolate(const Arguments& arguments); private: //SDL 2 events void drawEvent() override; void tickEvent() override; void viewportEvent(ViewportEvent& event) override; void pointerPressEvent(PointerEvent& event) override; void pointerReleaseEvent(PointerEvent& event) override; void pointerMoveEvent(PointerMoveEvent& event) override; void keyPressEvent(KeyEvent& event) override; void keyReleaseEvent(KeyEvent& event) override; void textInputEvent(TextInputEvent& event) override; // Render void RenderToFramebuffer(GL::Framebuffer& framebuffer); // UI void DrawUI(); void ResizeUI(Vector2i windowSize); //Systems void UpdateMagnumObjects(); // Callbacks void Import(const std::string& file); void EntitySelected(entt::entity entity); //Scene Scene3D _scene; SceneGraph::DrawableGroup3D _drawables; Camera _camera; // Resources std::vector> _meshes; std::vector> _textures; std::unordered_map _materials; Shaders::PhongGL _phongShader; entt::registry _registry; ImGuiIntegration::Context _imgui{NoCreate}; float _sidebarWidth = 0.17f; std::vector _uiComponents; UI::RenderWindow _uiSceneRenderer; UI::EntityListPanel _uiEntityListPanel; UI::EntityEditorWindow _uiEntityEditorWindow; }; #endif //CHOCOLATE_CHOCOLATE_H