mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
* Clean up all missing EntitySystem proxy method uses * Restore comment * Fix bad change that caused closure allocation * tuple * Revert "tuple" This reverts commit14581a40aa. * Revert "Fix bad change that caused closure allocation" This reverts commit215b2559ed. * Revert "Restore comment" This reverts commit4a47a36557. * Revert "Clean up all missing EntitySystem proxy method uses" This reverts commit3b1fe4ce7f. * Redo with improved code fixer. Let's see how it fares this time
67 lines
1.9 KiB
C#
67 lines
1.9 KiB
C#
using System.Numerics;
|
|
using Robust.Client.Graphics;
|
|
using Robust.Client.Player;
|
|
using Robust.Client.UserInterface;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.IoC;
|
|
using Robust.Shared.Physics.Components;
|
|
|
|
namespace Robust.Client.GameObjects;
|
|
|
|
public sealed class ShowPlayerVelocityDebugSystem : EntitySystem
|
|
{
|
|
[Dependency] private readonly IEyeManager _eyeManager = default!;
|
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
|
[Dependency] private readonly TransformSystem _transform = default!;
|
|
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
|
|
|
|
internal bool Enabled
|
|
{
|
|
get => _label.Parent != null;
|
|
set
|
|
{
|
|
if (value)
|
|
{
|
|
_uiManager.WindowRoot.AddChild(_label);
|
|
}
|
|
else
|
|
{
|
|
_label.Orphan();
|
|
}
|
|
}
|
|
}
|
|
|
|
private Label _label = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
_label = new Label();
|
|
}
|
|
|
|
public override void FrameUpdate(float frameTime)
|
|
{
|
|
base.FrameUpdate(frameTime);
|
|
if (!Enabled)
|
|
{
|
|
_label.Visible = false;
|
|
return;
|
|
}
|
|
|
|
var player = _playerManager.LocalEntity;
|
|
|
|
if (player == null || !TryComp(player.Value, out PhysicsComponent? body))
|
|
{
|
|
_label.Visible = false;
|
|
return;
|
|
}
|
|
|
|
var screenPos = _eyeManager.WorldToScreen(_transform.GetWorldPosition(Transform(player.Value)));
|
|
LayoutContainer.SetPosition(_label, screenPos + new Vector2(0, 50));
|
|
_label.Visible = true;
|
|
|
|
_label.Text = $"Speed: {body.LinearVelocity.Length():0.00}\nLinear: {body.LinearVelocity.X:0.00}, {body.LinearVelocity.Y:0.00}\nAngular: {body.AngularVelocity}";
|
|
}
|
|
}
|