using System; using System.Diagnostics; using UnityEngine.UIElements; namespace UnityEngine.Rendering.UnifiedRayTracing { internal static class Utils { public static void Destroy(UnityEngine.Object obj) { if (obj != null) { #if UNITY_EDITOR if (Application.isPlaying && !UnityEditor.EditorApplication.isPaused) UnityEngine.Object.Destroy(obj); else UnityEngine.Object.DestroyImmediate(obj); #else UnityEngine.Object.Destroy(obj); #endif } } [Conditional("UNITY_ASSERTIONS")] public static void CheckArgIsNotNull(System.Object obj, string argName) { if (obj == null) throw new ArgumentNullException(argName); } [Conditional("UNITY_ASSERTIONS")] public static void CheckArg(bool condition, string message) { if (!condition) throw new ArgumentException(message); } [Conditional("UNITY_ASSERTIONS")] public static void CheckArgRange(T value, T minIncluded, T maxExcluded, string argName) where T: IComparable { if (value.CompareTo(minIncluded) < 0 || value.CompareTo(maxExcluded) >= 0) { var message = $"{argName}={value}, it must be in the range [{minIncluded}, {maxExcluded}["; throw new ArgumentOutOfRangeException(argName, message); } } } }