* Fix TransformComponent.MapPosition warnings in Content.Client * Fix TransformComponent.MapPosition warnings in Content.IntegrationTests * Fix TransformComponent.MapPosition warnings in Content.Shared * Fix TransformComponent.MapPosition warnings in Content.Server * Fix TransformComponent.WorldPosition warnings in Content.Shared * Fix TransformComponent.WorldPosition warnings in Content.Client Excepts ClickableComponent b/c that needs to be ECS'd entirely later * Fix TransformComponent.WorldPosition warnings in Content.Server * Fix TransformComponent.WorldRotation warnings in Content.* * Fix TransformComponent.MapPosition warnings I missed * Fix TransformComponent.WorldMatrix warnings in Content.* * Fix TransformComponent.InvWorldMatrix warnings in Content.* * Fix TransformComponent.GetWorldPositionRotationMatrixWithInv warnings in Content.* * Fix TransformComponent.GetWorldPositionRotationMatrix warnings in Content.* * Fix TransformComponent.GetWorldPositionRotation warnings in Content.* * Fix TransformComponent.Anchored.set warnings in Content.* * Fix TransformComponent.Coordinates.set warnings in Content.* * Fix TransformComponent.LocalPosition.set warnings in Content.* * Fix TransformComponent.AttachToGridOrMap warnings in Content.* * Fix TransformComponent.AttachParent warnings in Content.* * Preempt TransformComponent.LocalRotation.set warnings in Content.Shared * Preempt TransformComponent.LocalRotation.set warnings in Content.Client * Preempt TransformComponent.LocalRotation.set warnings in Content.IntegrationTests * Preempt TransformComponent.LocalRotation.set warnings in Content.Server * Fix/Preempt the remaining obsolete TransformComponent properties/methods in Content.* * ECS ClickableComponent * Fix obsolete SharedTransformSystem methods in Content.* * Fix ExplosionOverlay `SharedTransformSystem` dependency * Maybe fix null eye position breaking tests * MGS requested changes
48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
using System.Numerics;
|
|
using Robust.Client.Graphics;
|
|
using Robust.Client.ResourceManagement;
|
|
using Robust.Shared.Enums;
|
|
|
|
namespace Content.Client.NPC.HTN;
|
|
|
|
public sealed class HTNOverlay : Overlay
|
|
{
|
|
private readonly IEntityManager _entManager = default!;
|
|
private readonly Font _font = default!;
|
|
private SharedTransformSystem? _xformSystem = null;
|
|
|
|
public override OverlaySpace Space => OverlaySpace.ScreenSpace;
|
|
|
|
public HTNOverlay(IEntityManager entManager, IResourceCache resourceCache)
|
|
{
|
|
_entManager = entManager;
|
|
_font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10);
|
|
}
|
|
|
|
protected override void Draw(in OverlayDrawArgs args)
|
|
{
|
|
if (args.ViewportControl == null)
|
|
return;
|
|
|
|
_xformSystem ??= _entManager.SystemOrNull<SharedTransformSystem>();
|
|
if (_xformSystem is null)
|
|
return;
|
|
|
|
var handle = args.ScreenHandle;
|
|
|
|
foreach (var (comp, xform) in _entManager.EntityQuery<HTNComponent, TransformComponent>(true))
|
|
{
|
|
if (string.IsNullOrEmpty(comp.DebugText) || xform.MapID != args.MapId)
|
|
continue;
|
|
|
|
var worldPos = _xformSystem.GetWorldPosition(xform);
|
|
|
|
if (!args.WorldAABB.Contains(worldPos))
|
|
continue;
|
|
|
|
var screenPos = args.ViewportControl.WorldToScreen(worldPos);
|
|
handle.DrawString(_font, screenPos + new Vector2(0, 10f), comp.DebugText, Color.White);
|
|
}
|
|
}
|
|
}
|