Skip to content

Commit

Permalink
Merge pull request #300 from adriengivry/fix/outline-hover
Browse files Browse the repository at this point in the history
Fixed hover outline not rendering
  • Loading branch information
litelawliet authored Jun 11, 2024
2 parents 11676e6 + 08447cd commit 5676ac9
Showing 1 changed file with 23 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ const OvMaths::FVector3 kLightVolumeColor = { 1.0f, 1.0f, 0.0f };
const OvMaths::FVector3 kColliderColor = { 0.0f, 1.0f, 0.0f };
const OvMaths::FVector3 kFrustumColor = { 1.0f, 1.0f, 1.0f };

const OvMaths::FVector4 kDefaultOutlineColor{ 1.0f, 0.7f, 0.0f, 1.0f };
const OvMaths::FVector4 kSelectedOutlineColor{ 1.0f, 1.0f, 0.0f, 1.0f };
const OvMaths::FVector4 kHoveredOutlineColor{ 1.0f, 1.0f, 0.0f, 1.0f };
const OvMaths::FVector4 kSelectedOutlineColor{ 1.0f, 0.7f, 0.0f, 1.0f };

constexpr float kDefaultOutlineWidth = 2.5f;
constexpr float kHoveredOutlineWidth = 2.5f;
constexpr float kSelectedOutlineWidth = 5.0f;

OvMaths::FMatrix4 CalculateCameraModelMatrix(OvCore::ECS::Actor& p_actor)
Expand Down Expand Up @@ -174,8 +174,16 @@ class DebugActorRenderPass : public OvRendering::Core::ARenderPass
if (debugSceneDescriptor.selectedActor)
{
auto& selectedActor = debugSceneDescriptor.selectedActor.value();
const bool isActorHovered = debugSceneDescriptor.highlightedActor && debugSceneDescriptor.highlightedActor->GetID() == selectedActor.GetID();

DrawActorDebugElements(selectedActor);
m_renderer.GetFeature<OvEditor::Rendering::OutlineRenderFeature>().DrawOutline(selectedActor, kSelectedOutlineColor, kSelectedOutlineWidth);
m_renderer.GetFeature<OvEditor::Rendering::OutlineRenderFeature>().DrawOutline(
selectedActor,
isActorHovered ?
kHoveredOutlineColor :
kSelectedOutlineColor,
kSelectedOutlineWidth
);
m_renderer.Clear(false, true, false, OvMaths::FVector3::Zero);
m_renderer.GetFeature<OvEditor::Rendering::GizmoRenderFeature>().DrawGizmo(
selectedActor.transform.GetWorldPosition(),
Expand All @@ -185,6 +193,17 @@ class DebugActorRenderPass : public OvRendering::Core::ARenderPass
debugSceneDescriptor.highlightedGizmoDirection
);
}

if (debugSceneDescriptor.highlightedActor)
{
auto& highlightedActor = debugSceneDescriptor.highlightedActor.value();

// Render the outline only if the actor is not already selected (as its outline render should have been handled already).
if (!debugSceneDescriptor.selectedActor || highlightedActor.GetID() != debugSceneDescriptor.selectedActor->GetID())
{
m_renderer.GetFeature<OvEditor::Rendering::OutlineRenderFeature>().DrawOutline(highlightedActor, kHoveredOutlineColor, kHoveredOutlineWidth);
}
}
}

void DrawActorDebugElements(OvCore::ECS::Actor& p_actor)
Expand Down

0 comments on commit 5676ac9

Please sign in to comment.