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>(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);
}
}
}
}