81 lines
2.2 KiB
C++
81 lines
2.2 KiB
C++
#ifndef LIGHTKEEPER_H
|
|
#define LIGHTKEEPER_H
|
|
|
|
#include <optional>
|
|
#include <string>
|
|
|
|
#include <destrum/App.h>
|
|
#include <destrum/Scene/SceneManager.h>
|
|
#include <destrum/Graphics/RenderResources.h>
|
|
#include <destrum/Util/RectGizmo.h>
|
|
#include <destrum/Util/TransformGizmo.h>
|
|
|
|
#include "destrum/Graphics/Resources/Cubemap.h"
|
|
#include "destrum/ObjectModel/GameObject.h"
|
|
|
|
#include <scenes/MainScene.h>
|
|
|
|
class CameraComponent;
|
|
class FirstPersonController;
|
|
class LightKeeper final : public App {
|
|
public:
|
|
LightKeeper();
|
|
virtual ~LightKeeper();
|
|
void customInit() override;
|
|
void customUpdate(float dt) override;
|
|
void customDraw() override;
|
|
void customCleanup() override;
|
|
void customFixedUpdate(float dt) override;
|
|
|
|
void onViewportResize(int newWidth, int newHeight) override;
|
|
void drawViewportOverlay() override;
|
|
void onViewportAssetDropped(std::string_view path) override;
|
|
void customWindowsMenu() override;
|
|
void onPlayModeChanged(bool nowPlaying) override;
|
|
|
|
private:
|
|
void setupSkybox();
|
|
void updateViewMode();
|
|
[[nodiscard]] CameraComponent* getSceneCamera() const;
|
|
[[nodiscard]] Camera& getViewCamera();
|
|
[[nodiscard]] bool isPlayerViewActive() const;
|
|
|
|
// LightkeeperDebugUi.cpp
|
|
void updateDebugUi();
|
|
void drawDebugMenuBar();
|
|
void drawWindowMenu();
|
|
void drawTestWindow();
|
|
void spawnBall();
|
|
void saveCurrentScene();
|
|
void loadScene();
|
|
void createEmptyScene();
|
|
void saveSelectedPrefab();
|
|
void instantiatePrefab();
|
|
void findPlayer();
|
|
void submitDebugDraws();
|
|
void submitColliderDebugLines();
|
|
|
|
Camera camera{glm::vec3(0.f, 0.f, -5.f), glm::vec3(0, 1, 0)};
|
|
std::optional<Camera> editorCamera;
|
|
|
|
std::unique_ptr<CubeMap> skyboxCubemap;
|
|
MainSceneObjects mainScene{};
|
|
|
|
ImageID debug2DTexture{NULL_IMAGE_ID};
|
|
TransformGizmo transformGizmo;
|
|
RectGizmo rectGizmo;
|
|
|
|
char scenePath[512]{"scenes/debug_scene.json"};
|
|
char newSceneName[128]{"EmptyScene"};
|
|
char prefabPath[512]{"prefabs/selected.prefab"};
|
|
std::string sceneStatus;
|
|
bool renderColliders{false};
|
|
bool render2DShapes{true};
|
|
bool renderDebugLines{true};
|
|
bool showTransformGizmo{true};
|
|
bool showTestWindow{true};
|
|
bool useFreeCamera{false};
|
|
};
|
|
|
|
#endif //LIGHTKEEPER_H
|