ui/DiseaseSprite.razor
@using Sandbox
@using Sandbox.UI
@using System
@namespace Facepunch.BombRoyale
@attribute [StyleSheet( "DiseaseSprite.razor.scss" )]
@inherits PanelComponent

<root>
	<div class="icon"></div>
</root>

@code
{
	private Player Player { get; set; }

	public static DiseaseSprite Create( Player player )
	{
		var go = new GameObject();
		go.Components.Create<Sandbox.WorldPanel>();
		go.Name = "Disease";
		
		var sprite = go.Components.Create<DiseaseSprite>();
		sprite.Player = player;
		
		return sprite;
	}

	protected override void OnFixedUpdate()
	{
		if ( Player.IsValid() && Player.LifeState == LifeState.Alive )
		{
			var transform = Transform.World;
			var position = Player.WorldPosition + Vector3.Up * 80f;
			var direction = (Scene.Camera.WorldPosition - position).Normal;
			var targetRotation = Rotation.LookAt( direction );

			WorldPosition = position;
			WorldRotation = targetRotation;
			transform.Scale = 0.9f + (0.1f + (MathF.Cos( Time.Now * 4f ) * 0.1f));

			Transform.World = transform;
		}
		else
		{
			GameObject.Destroy();
		}
		
		base.OnFixedUpdate();
	}
}