47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "Scene/EditorSceneBackend.h"
|
|
#include "Scene/SceneToolState.h"
|
|
#include "Scene/SceneViewportCameraController.h"
|
|
#include "Scene/SceneViewportRenderRequest.h"
|
|
|
|
#include <cstdint>
|
|
|
|
namespace XCEngine::UI::Editor::App {
|
|
|
|
class EditorSceneRuntime;
|
|
|
|
class SceneViewportSession {
|
|
public:
|
|
SceneViewportSession();
|
|
|
|
void Reset();
|
|
|
|
EditorSceneCameraSnapshot BuildCameraSnapshot() const;
|
|
SceneViewportRenderRequest BuildRenderRequest(
|
|
const EditorSceneRuntime& sceneRuntime) const;
|
|
|
|
void ApplyCameraInput(const SceneViewportCameraInputState& input);
|
|
bool FocusSelection(const EditorSceneRuntime& sceneRuntime);
|
|
|
|
SceneToolMode GetToolMode() const;
|
|
SceneToolSpaceMode GetToolSpaceMode() const;
|
|
SceneToolPivotMode GetToolPivotMode() const;
|
|
|
|
void SetToolMode(SceneToolMode mode);
|
|
void SetToolSpaceMode(SceneToolSpaceMode mode);
|
|
void SetToolPivotMode(SceneToolPivotMode mode);
|
|
|
|
private:
|
|
void IncrementCameraRevision();
|
|
std::uint64_t BuildRequestRevision(std::uint64_t sceneContentRevision) const;
|
|
|
|
SceneViewportCameraController m_cameraController = {};
|
|
SceneToolMode m_toolMode = SceneToolMode::Translate;
|
|
SceneToolSpaceMode m_toolSpaceMode = SceneToolSpaceMode::World;
|
|
SceneToolPivotMode m_toolPivotMode = SceneToolPivotMode::Pivot;
|
|
std::uint64_t m_cameraRevision = 0u;
|
|
};
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|