Formalize scene viewport transform gizmo overlay provider
This commit is contained in:
@@ -213,6 +213,8 @@ public:
|
||||
m_sceneViewportEditorOverlayRenderer.Shutdown();
|
||||
m_sceneViewCamera = {};
|
||||
ResetSceneViewEditorOverlayFrameData();
|
||||
m_sceneViewTransformGizmoOverlayState = {};
|
||||
m_sceneViewTransformGizmoOverlayDirty = false;
|
||||
m_sceneViewLastRenderContext = {};
|
||||
m_device = nullptr;
|
||||
m_backend = nullptr;
|
||||
@@ -225,8 +227,8 @@ public:
|
||||
entry.requestedWidth = 0;
|
||||
entry.requestedHeight = 0;
|
||||
}
|
||||
m_sceneViewTransientTransformGizmoOverlay = {};
|
||||
m_sceneViewTransientTransformGizmoInputs = {};
|
||||
m_sceneViewTransformGizmoOverlayState = {};
|
||||
m_sceneViewTransformGizmoOverlayDirty = true;
|
||||
}
|
||||
|
||||
EditorViewportFrame RequestViewport(EditorViewportKind kind, const ImVec2& requestedSize) override {
|
||||
@@ -360,23 +362,10 @@ public:
|
||||
return m_sceneViewEditorOverlayFrameData;
|
||||
}
|
||||
|
||||
const SceneViewportOverlayFrameData& GetSceneViewInteractionOverlayFrameData(
|
||||
IEditorContext& context,
|
||||
const SceneViewportOverlayData& overlay,
|
||||
const SceneViewportTransformGizmoHandleBuildInputs& inputs) override {
|
||||
EnsureSceneViewEditorOverlayFrameData(context);
|
||||
m_sceneViewInteractionOverlayFrameData = m_sceneViewEditorOverlayFrameData;
|
||||
AppendSceneViewportOverlayFrameData(
|
||||
m_sceneViewInteractionOverlayFrameData,
|
||||
BuildSceneViewportTransformGizmoOverlayFrameData(overlay, inputs));
|
||||
return m_sceneViewInteractionOverlayFrameData;
|
||||
}
|
||||
|
||||
void SetSceneViewTransientTransformGizmoOverlayData(
|
||||
const SceneViewportOverlayData& overlay,
|
||||
const SceneViewportTransformGizmoHandleBuildInputs& inputs) override {
|
||||
m_sceneViewTransientTransformGizmoOverlay = overlay;
|
||||
m_sceneViewTransientTransformGizmoInputs = inputs;
|
||||
void SetSceneViewTransformGizmoOverlayState(
|
||||
const SceneViewportTransformGizmoOverlayState& state) override {
|
||||
m_sceneViewTransformGizmoOverlayState = state;
|
||||
m_sceneViewTransformGizmoOverlayDirty = true;
|
||||
}
|
||||
|
||||
void RenderRequestedViewports(
|
||||
@@ -533,7 +522,6 @@ private:
|
||||
|
||||
void ResetSceneViewEditorOverlayFrameData() {
|
||||
m_sceneViewEditorOverlayFrameData = {};
|
||||
m_sceneViewInteractionOverlayFrameData = {};
|
||||
m_sceneViewEditorOverlayScene = nullptr;
|
||||
m_sceneViewEditorOverlaySelectedObjectIds.clear();
|
||||
m_sceneViewEditorOverlayViewportWidth = 0u;
|
||||
@@ -557,7 +545,8 @@ private:
|
||||
uint32_t viewportHeight,
|
||||
const std::vector<uint64_t>& selectedObjectIds,
|
||||
uint64_t contentSignature) const {
|
||||
return !m_sceneViewEditorOverlayCached ||
|
||||
return m_sceneViewTransformGizmoOverlayDirty ||
|
||||
!m_sceneViewEditorOverlayCached ||
|
||||
m_sceneViewEditorOverlayScene != scene ||
|
||||
m_sceneViewEditorOverlayViewportWidth != viewportWidth ||
|
||||
m_sceneViewEditorOverlayViewportHeight != viewportHeight ||
|
||||
@@ -600,7 +589,8 @@ private:
|
||||
overlay,
|
||||
viewportWidth,
|
||||
viewportHeight,
|
||||
selectedObjectIds);
|
||||
selectedObjectIds,
|
||||
&m_sceneViewTransformGizmoOverlayState);
|
||||
}
|
||||
|
||||
m_sceneViewEditorOverlayScene = scene;
|
||||
@@ -609,6 +599,7 @@ private:
|
||||
m_sceneViewEditorOverlayViewportHeight = viewportHeight;
|
||||
m_sceneViewEditorOverlayContentSignature = contentSignature;
|
||||
m_sceneViewEditorOverlayCached = true;
|
||||
m_sceneViewTransformGizmoOverlayDirty = false;
|
||||
}
|
||||
|
||||
void ApplyViewportRenderFailure(
|
||||
@@ -653,7 +644,6 @@ private:
|
||||
outState.overlay,
|
||||
selectedObjectIds,
|
||||
editorOverlayFrameData,
|
||||
BuildSceneViewTransientTransformGizmoOverlayFrameData(),
|
||||
[this](const Rendering::Passes::InfiniteGridPassData& data) {
|
||||
return CreateSceneViewportGridPass(
|
||||
m_sceneViewportGridRenderer,
|
||||
@@ -864,12 +854,6 @@ private:
|
||||
});
|
||||
}
|
||||
|
||||
SceneViewportOverlayFrameData BuildSceneViewTransientTransformGizmoOverlayFrameData() const {
|
||||
return BuildSceneViewportTransformGizmoOverlayFrameData(
|
||||
m_sceneViewTransientTransformGizmoOverlay,
|
||||
m_sceneViewTransientTransformGizmoInputs);
|
||||
}
|
||||
|
||||
UI::ImGuiBackendBridge* m_backend = nullptr;
|
||||
RHI::RHIDevice* m_device = nullptr;
|
||||
std::unique_ptr<Rendering::SceneRenderer> m_sceneRenderer;
|
||||
@@ -878,15 +862,14 @@ private:
|
||||
std::array<ViewportEntry, 2> m_entries = {};
|
||||
SceneViewCameraState m_sceneViewCamera;
|
||||
SceneViewportOverlayFrameData m_sceneViewEditorOverlayFrameData = {};
|
||||
SceneViewportOverlayFrameData m_sceneViewInteractionOverlayFrameData = {};
|
||||
SceneViewportOverlayData m_sceneViewTransientTransformGizmoOverlay = {};
|
||||
SceneViewportTransformGizmoHandleBuildInputs m_sceneViewTransientTransformGizmoInputs = {};
|
||||
SceneViewportTransformGizmoOverlayState m_sceneViewTransformGizmoOverlayState = {};
|
||||
const Components::Scene* m_sceneViewEditorOverlayScene = nullptr;
|
||||
std::vector<uint64_t> m_sceneViewEditorOverlaySelectedObjectIds = {};
|
||||
uint32_t m_sceneViewEditorOverlayViewportWidth = 0u;
|
||||
uint32_t m_sceneViewEditorOverlayViewportHeight = 0u;
|
||||
uint64_t m_sceneViewEditorOverlayContentSignature = 0u;
|
||||
bool m_sceneViewEditorOverlayCached = false;
|
||||
bool m_sceneViewTransformGizmoOverlayDirty = false;
|
||||
SceneViewportGridPassRenderer m_sceneViewportGridRenderer;
|
||||
SceneViewportSelectionOutlinePassRenderer m_sceneViewportSelectionOutlineRenderer;
|
||||
SceneViewportEditorOverlayPassRenderer m_sceneViewportEditorOverlayRenderer;
|
||||
|
||||
Reference in New Issue
Block a user