UI/OwnerLabel/OwnerLabel.razor
@using Sandbox;
@using Sandbox.UI;
@inherits PanelComponent
@namespace Sandbox
<root>
<div class="owner-label hud-panel">
<label class="name">Owned by @_ownerName</label>
</div>
</root>
@code
{
string _ownerName;
Player Player => Player.FindLocalPlayer();
protected override void OnUpdate()
{
var camera = Scene.Camera;
if (camera is null || (Player.IsValid() && Player.WantsHideHud) )
{
Panel.SetClass( "visible", false );
return;
}
var tr = Scene.Trace
.Ray( camera.Transform.World.ForwardRay, 2048 )
.WithoutTags( "player", "trigger" )
.Run();
if ( tr.Hit && tr.GameObject.IsValid() )
{
var ownable = tr.GameObject.GetComponentInParent<Ownable>( true );
if ( ownable.IsValid() && ownable.Owner is not null )
{
_ownerName = ownable.Owner.DisplayName;
Panel.SetClass( "visible", true );
return;
}
}
Panel.SetClass( "visible", false );
}
protected override int BuildHash() => System.HashCode.Combine( _ownerName );
}