using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; namespace Rigging.Debugging { [DefaultExecutionOrder(-100)] public class GizmosHandle : MonoBehaviour { private static GizmosHandle instance; private static event System.Action onDrawGizmos; private static event System.Action onDrawGizmosFixedUpdate; private void OnDrawGizmos() { onDrawGizmos?.Invoke(); onDrawGizmos = null; onDrawGizmosFixedUpdate?.Invoke(); } private void FixedUpdate() { onDrawGizmosFixedUpdate = null; } public static void DrawCube(Vector3 position, Vector3 size) { Check(); if (Time.inFixedTimeStep) { onDrawGizmosFixedUpdate += () => { Gizmos.DrawCube(position, size); }; } else { onDrawGizmos += () => { Gizmos.DrawCube(position, size); }; } } static void Check() { if(instance == null) { GameObject handle = new GameObject(); handle.name = "GizmosHandle"; instance = handle.AddComponent(); } } } }