using UnityEngine; using UnityEngine.UIElements; namespace LiveOpsExamples { public class BootOverlayPanel : MonoBehaviour { private const float SpinnerDegreesPerSecond = 180f; [SerializeField] private PanelRenderer panelRenderer; [SerializeField] private CozyCollectorController controller; private VisualElement _overlay; private Label _statusLabel; private VisualElement _spinner; private IVisualElementScheduledItem _spinSchedule; private float _angle; private float _lastTick; private void OnEnable() { panelRenderer.RegisterUIReloadCallback(OnUIReload); controller.PhaseChanged += ApplyVisibility; } private void OnDisable() { panelRenderer.UnregisterUIReloadCallback(OnUIReload); controller.PhaseChanged -= ApplyVisibility; _spinSchedule?.Pause(); } private void OnUIReload(PanelRenderer renderer, VisualElement root) { _overlay = root.Q("boot-overlay"); _statusLabel = root.Q