Formalize scene viewport transform gizmo overlay provider
This commit is contained in:
@@ -450,6 +450,28 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class SceneViewportTransformGizmoOverlayProvider final : public ISceneViewportOverlayProvider {
|
||||
public:
|
||||
const char* GetName() const override {
|
||||
return "SceneViewportTransformGizmoOverlayProvider";
|
||||
}
|
||||
|
||||
void AppendOverlay(
|
||||
const SceneViewportOverlayBuildContext& context,
|
||||
SceneViewportOverlayFrameData& frameData) const override {
|
||||
if (!context.IsValid() ||
|
||||
context.transformGizmoOverlayState == nullptr ||
|
||||
!context.transformGizmoOverlayState->HasAnyVisibleGizmo()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const SceneViewportTransformGizmoHandleBuildInputs inputs =
|
||||
BuildSceneViewportTransformGizmoHandleBuildInputs(*context.transformGizmoOverlayState);
|
||||
AppendTransformGizmoScreenTriangles(frameData, inputs);
|
||||
AppendTransformGizmoHandleRecords(frameData, inputs);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
void SceneViewportOverlayProviderRegistry::AddProvider(
|
||||
@@ -491,10 +513,15 @@ std::unique_ptr<ISceneViewportOverlayProvider> CreateSceneViewportLightOverlayPr
|
||||
return std::make_unique<SceneViewportLightOverlayProvider>();
|
||||
}
|
||||
|
||||
std::unique_ptr<ISceneViewportOverlayProvider> CreateSceneViewportTransformGizmoOverlayProvider() {
|
||||
return std::make_unique<SceneViewportTransformGizmoOverlayProvider>();
|
||||
}
|
||||
|
||||
SceneViewportOverlayProviderRegistry BuildDefaultSceneViewportOverlayProviderRegistry() {
|
||||
SceneViewportOverlayProviderRegistry registry;
|
||||
registry.AddProvider(CreateSceneViewportCameraOverlayProvider());
|
||||
registry.AddProvider(CreateSceneViewportLightOverlayProvider());
|
||||
registry.AddProvider(CreateSceneViewportTransformGizmoOverlayProvider());
|
||||
return registry;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user