68 lines
1.9 KiB
C++
68 lines
1.9 KiB
C++
#pragma once
|
|
|
|
#include "SceneViewportEditorOverlayData.h"
|
|
|
|
#include <imgui.h>
|
|
|
|
#include <cstdint>
|
|
|
|
namespace XCEngine {
|
|
namespace Editor {
|
|
|
|
enum class SceneViewportHudOverlayHitKind : uint8_t {
|
|
None = 0,
|
|
OrientationAxis
|
|
};
|
|
|
|
struct SceneViewportHudOverlayHitResult {
|
|
SceneViewportHudOverlayHitKind kind = SceneViewportHudOverlayHitKind::None;
|
|
SceneViewportOrientationAxis orientationAxis = SceneViewportOrientationAxis::None;
|
|
|
|
bool HasHit() const {
|
|
return kind != SceneViewportHudOverlayHitKind::None;
|
|
}
|
|
};
|
|
|
|
struct SceneViewportHudOverlayData {
|
|
SceneViewportOverlayData sceneOverlay = {};
|
|
bool showOrientationGizmo = true;
|
|
bool showSceneIcons = true;
|
|
const SceneViewportOverlayFrameData* overlayFrameData = nullptr;
|
|
|
|
bool HasVisibleElements() const {
|
|
return sceneOverlay.valid &&
|
|
(showOrientationGizmo ||
|
|
(showSceneIcons &&
|
|
overlayFrameData != nullptr &&
|
|
!overlayFrameData->worldSprites.empty()));
|
|
}
|
|
};
|
|
|
|
inline SceneViewportHudOverlayData BuildSceneViewportHudOverlayData(
|
|
const SceneViewportOverlayData& sceneOverlay,
|
|
bool showOrientationGizmo = true,
|
|
const SceneViewportOverlayFrameData* overlayFrameData = nullptr,
|
|
bool showSceneIcons = true) {
|
|
SceneViewportHudOverlayData data = {};
|
|
data.sceneOverlay = sceneOverlay;
|
|
data.showOrientationGizmo = showOrientationGizmo;
|
|
data.showSceneIcons = showSceneIcons;
|
|
data.overlayFrameData = overlayFrameData;
|
|
return data;
|
|
}
|
|
|
|
void DrawSceneViewportHudOverlay(
|
|
ImDrawList* drawList,
|
|
const SceneViewportHudOverlayData& overlay,
|
|
const ImVec2& viewportMin,
|
|
const ImVec2& viewportMax);
|
|
|
|
SceneViewportHudOverlayHitResult HitTestSceneViewportHudOverlay(
|
|
const SceneViewportHudOverlayData& overlay,
|
|
const ImVec2& viewportMin,
|
|
const ImVec2& viewportMax,
|
|
const ImVec2& mousePosition);
|
|
|
|
} // namespace Editor
|
|
} // namespace XCEngine
|