using System.Collections; using System.Collections.Generic; using UnityEngine; /******************************************************************************* *Create By CG *Function *******************************************************************************/ namespace CG.UTility { public class BindablePropertyRef where T : class { private T mValue = null; public T PreviousValue = null; public T Value { get => mValue; set { if (mValue!=value) { mValue = value; OnValueChanged?.Invoke(value); PreviousValue = value; } } } public System.Action OnValueChanged; } public class BindableProperty where T : System.IEquatable { private T mValue = default(T); public T Value { get => mValue; set { if (!value.Equals(mValue)) { mValue = value; OnValueChanged?.Invoke(mValue); } } } public System.Action OnValueChanged; } public class BindablePropertyDic where T2: class { private Dictionary _value = new Dictionary(); public Dictionary GetValue() { return _value; } public void SetValue(T1 key, T2 itemValue) { if (_value.ContainsKey(key)) { _value[key] = itemValue; } else { _value.Add(key, itemValue); } OnValueChanged?.Invoke(_value); } public void SetDefault() { _value = new Dictionary(); } public System.Action> OnValueChanged; } }