using System.Collections.Generic; using UnityEngine; namespace XCharts.Runtime { public static class PropertyUtil { public static bool SetColor(ref Color currentValue, Color newValue) { if (currentValue.r == newValue.r && currentValue.g == newValue.g && currentValue.b == newValue.b && currentValue.a == newValue.a) return false; currentValue = newValue; return true; } public static bool SetColor(ref Color32 currentValue, Color32 newValue) { if (currentValue.r == newValue.r && currentValue.g == newValue.g && currentValue.b == newValue.b && currentValue.a == newValue.a) return false; currentValue = newValue; return true; } public static bool SetStruct(ref T currentValue, T newValue) where T : struct { if (EqualityComparer.Default.Equals(currentValue, newValue)) return false; currentValue = newValue; return true; } public static bool SetClass(ref T currentValue, T newValue, bool notNull = false) where T : class { if (notNull) { if (newValue == null) { Debug.LogError("can not be null."); return false; } } if ((currentValue == null && newValue == null) || (currentValue != null && currentValue.Equals(newValue))) return false; currentValue = newValue; return true; } } }