Formalize scene viewport HUD overlay
This commit is contained in:
@@ -4,11 +4,10 @@
|
||||
#include "Core/ISelectionManager.h"
|
||||
#include "SceneViewPanel.h"
|
||||
#include "Viewport/SceneViewportEditorOverlayData.h"
|
||||
#include "Viewport/SceneViewportHudOverlay.h"
|
||||
#include "Viewport/SceneViewportOverlayHandleBuilder.h"
|
||||
#include "Viewport/SceneViewportOverlayHitTester.h"
|
||||
#include "Viewport/SceneViewportMath.h"
|
||||
#include "Viewport/SceneViewportOrientationGizmo.h"
|
||||
#include "Viewport/SceneViewportOverlayRenderer.h"
|
||||
#include "Viewport/SceneViewportTransformGizmoFrameBuilder.h"
|
||||
#include "ViewportPanelContent.h"
|
||||
#include "Platform/Win32Utf8.h"
|
||||
@@ -139,6 +138,17 @@ SceneViewportInteractionCandidate BuildOrientationGizmoInteractionCandidate(
|
||||
return candidate;
|
||||
}
|
||||
|
||||
SceneViewportInteractionCandidate BuildHudOverlayInteractionCandidate(
|
||||
const SceneViewportHudOverlayHitResult& hitResult) {
|
||||
switch (hitResult.kind) {
|
||||
case SceneViewportHudOverlayHitKind::OrientationAxis:
|
||||
return BuildOrientationGizmoInteractionCandidate(hitResult.orientationAxis);
|
||||
case SceneViewportHudOverlayHitKind::None:
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
SceneViewportInteractionCandidate BuildOverlayHandleInteractionCandidate(
|
||||
const SceneViewportOverlayHandleHitResult& hitResult) {
|
||||
SceneViewportInteractionCandidate candidate = {};
|
||||
@@ -549,6 +559,8 @@ void SceneViewPanel::Render() {
|
||||
activeGizmoKind = SceneViewportActiveGizmoKind::None;
|
||||
}
|
||||
const bool gizmoActive = activeGizmoKind != SceneViewportActiveGizmoKind::None;
|
||||
const SceneViewportHudOverlayData interactionHudOverlay =
|
||||
BuildSceneViewportHudOverlayData(overlay);
|
||||
SceneViewportInteractionCandidate hoveredInteraction = {};
|
||||
const bool canResolveViewportInteraction =
|
||||
hasInteractiveViewport &&
|
||||
@@ -564,9 +576,9 @@ void SceneViewPanel::Render() {
|
||||
hoveredInteraction);
|
||||
|
||||
AccumulateSceneViewportInteractionCandidate(
|
||||
BuildOrientationGizmoInteractionCandidate(
|
||||
HitTestSceneViewportOrientationGizmo(
|
||||
overlay,
|
||||
BuildHudOverlayInteractionCandidate(
|
||||
HitTestSceneViewportHudOverlay(
|
||||
interactionHudOverlay,
|
||||
content.itemMin,
|
||||
content.itemMax,
|
||||
io.MousePos)),
|
||||
@@ -812,12 +824,11 @@ void SceneViewPanel::Render() {
|
||||
m_scaleGizmo,
|
||||
drawGizmoFrameState.scaleContext)));
|
||||
|
||||
DrawSceneViewportOverlay(
|
||||
DrawSceneViewportHudOverlay(
|
||||
ImGui::GetWindowDrawList(),
|
||||
overlay,
|
||||
BuildSceneViewportHudOverlayData(overlay),
|
||||
content.itemMin,
|
||||
content.itemMax,
|
||||
content.availableSize);
|
||||
content.itemMax);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user