Formalize staged scene viewport gizmo frame API
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
#include "Viewport/SceneViewportInteractionResolver.h"
|
||||
#include "Viewport/SceneViewportMath.h"
|
||||
#include "Viewport/SceneViewportTransformGizmoCoordinator.h"
|
||||
#include "Viewport/SceneViewportTransformGizmoFrameBuilder.h"
|
||||
#include "ViewportPanelContent.h"
|
||||
#include "Platform/Win32Utf8.h"
|
||||
#include "UI/UI.h"
|
||||
@@ -339,46 +338,49 @@ void SceneViewPanel::Render() {
|
||||
const bool showingScaleGizmo = m_toolMode == SceneViewportToolMode::Scale || usingTransformTool;
|
||||
const bool useCenterPivot = m_pivotMode == SceneViewportPivotMode::Center;
|
||||
const bool localSpace = m_transformSpaceMode == SceneViewportTransformSpaceMode::Local;
|
||||
const SceneViewportTransformGizmoFrameOptions gizmoFrameOptions =
|
||||
BuildSceneViewportTransformGizmoFrameOptions(
|
||||
useCenterPivot,
|
||||
localSpace,
|
||||
usingTransformTool,
|
||||
showingMoveGizmo,
|
||||
showingRotateGizmo,
|
||||
showingScaleGizmo);
|
||||
const Math::Vector2 viewportSize(content.availableSize.x, content.availableSize.y);
|
||||
const Math::Vector2 localMousePosition(
|
||||
io.MousePos.x - content.itemMin.x,
|
||||
io.MousePos.y - content.itemMin.y);
|
||||
SceneViewportOverlayData overlay = {};
|
||||
SceneViewportTransformGizmoFrameUpdate interactionGizmoFrame = {};
|
||||
SceneViewportTransformGizmoFrameState gizmoFrameState = {};
|
||||
SceneViewportOverlayFrameData emptySceneOverlayFrameData = {};
|
||||
|
||||
if (hasInteractiveViewport) {
|
||||
overlay = viewportHostService->GetSceneViewOverlayData();
|
||||
gizmoFrameState = RefreshSceneViewportTransformGizmos(
|
||||
*m_context,
|
||||
overlay,
|
||||
viewportSize,
|
||||
localMousePosition,
|
||||
useCenterPivot,
|
||||
localSpace,
|
||||
usingTransformTool,
|
||||
showingMoveGizmo,
|
||||
interactionGizmoFrame = RefreshAndSubmitSceneViewportTransformGizmoFrame(
|
||||
*viewportHostService,
|
||||
BuildSceneViewportTransformGizmoRefreshRequest(
|
||||
*m_context,
|
||||
overlay,
|
||||
viewportSize,
|
||||
localMousePosition,
|
||||
gizmoFrameOptions),
|
||||
m_moveGizmo,
|
||||
showingRotateGizmo,
|
||||
m_rotateGizmo,
|
||||
showingScaleGizmo,
|
||||
m_scaleGizmo);
|
||||
gizmoFrameState = interactionGizmoFrame.frameState;
|
||||
} else {
|
||||
CancelSceneViewportTransformGizmoDrags(*m_context, m_moveGizmo, m_rotateGizmo, m_scaleGizmo);
|
||||
CancelSceneViewportTransformGizmoFrame(
|
||||
*m_context,
|
||||
m_moveGizmo,
|
||||
m_rotateGizmo,
|
||||
m_scaleGizmo);
|
||||
}
|
||||
|
||||
const SceneViewportTransformGizmoOverlaySubmission interactionGizmoSubmission =
|
||||
hasInteractiveViewport
|
||||
? BuildSceneViewportTransformGizmoOverlaySubmission(
|
||||
gizmoFrameState,
|
||||
showingMoveGizmo,
|
||||
m_moveGizmo,
|
||||
showingRotateGizmo,
|
||||
m_rotateGizmo,
|
||||
showingScaleGizmo,
|
||||
m_scaleGizmo)
|
||||
? interactionGizmoFrame.overlaySubmission
|
||||
: SceneViewportTransformGizmoOverlaySubmission{};
|
||||
SubmitSceneViewportTransformGizmoOverlaySubmission(*viewportHostService, interactionGizmoSubmission);
|
||||
const SceneViewportOverlayFrameData& interactionOverlayFrameData =
|
||||
hasInteractiveViewport
|
||||
? viewportHostService->GetSceneViewEditorOverlayFrameData(*m_context)
|
||||
@@ -559,32 +561,17 @@ void SceneViewPanel::Render() {
|
||||
|
||||
if (content.hasViewportArea && content.frame.hasTexture) {
|
||||
overlay = viewportHostService->GetSceneViewOverlayData();
|
||||
const SceneViewportTransformGizmoFrameState drawGizmoFrameState =
|
||||
RefreshSceneViewportTransformGizmos(
|
||||
RefreshAndSubmitSceneViewportTransformGizmoFrame(
|
||||
*viewportHostService,
|
||||
BuildSceneViewportTransformGizmoRefreshRequest(
|
||||
*m_context,
|
||||
overlay,
|
||||
viewportSize,
|
||||
localMousePosition,
|
||||
useCenterPivot,
|
||||
localSpace,
|
||||
usingTransformTool,
|
||||
showingMoveGizmo,
|
||||
m_moveGizmo,
|
||||
showingRotateGizmo,
|
||||
m_rotateGizmo,
|
||||
showingScaleGizmo,
|
||||
m_scaleGizmo);
|
||||
|
||||
SubmitSceneViewportTransformGizmoOverlaySubmission(
|
||||
*viewportHostService,
|
||||
BuildSceneViewportTransformGizmoOverlaySubmission(
|
||||
drawGizmoFrameState,
|
||||
showingMoveGizmo,
|
||||
m_moveGizmo,
|
||||
showingRotateGizmo,
|
||||
m_rotateGizmo,
|
||||
showingScaleGizmo,
|
||||
m_scaleGizmo));
|
||||
gizmoFrameOptions),
|
||||
m_moveGizmo,
|
||||
m_rotateGizmo,
|
||||
m_scaleGizmo);
|
||||
|
||||
DrawSceneViewportHudOverlay(
|
||||
ImGui::GetWindowDrawList(),
|
||||
|
||||
Reference in New Issue
Block a user