using UnityEngine; namespace QSB.Player { public class PlayerHUDMarker : HUDDistanceMarker { private PlayerInfo _player; private bool _isReady; protected override void InitCanvasMarker() { _markerRadius = 2f; _markerTarget = new GameObject().transform; _markerTarget.parent = transform; _markerTarget.localPosition = Vector3.up * 2; } public void Init(PlayerInfo player) { _player = player; _player.HudMarker = this; _isReady = true; } protected override void RefreshOwnVisibility() { if (_canvasMarker != null) { _canvasMarker.SetVisibility(true); } } private void Update() { if (!_isReady || !_player.PlayerStates.IsReady) { return; } _markerLabel = _player.Name.ToUpper(); _isReady = false; base.InitCanvasMarker(); } public void Remove() { // do N O T destroy the parent - it completely breaks the ENTIRE GAME if (_canvasMarker != null) { _canvasMarker.DestroyMarker(); } if (_markerTarget != null) { Destroy(_markerTarget.gameObject); } Destroy(this); } } }