Files
XCEngine/editor/app/Features/Scene/SceneViewportSession.h

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