75 lines
1.9 KiB
C#
75 lines
1.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
/*******************************************************************************
|
|
*Create By CG
|
|
*Function
|
|
*******************************************************************************/
|
|
namespace CG.UTility
|
|
{
|
|
public class BindablePropertyRef<T> 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<T> OnValueChanged;
|
|
}
|
|
public class BindableProperty<T> where T : System.IEquatable<T>
|
|
{
|
|
private T mValue = default(T);
|
|
|
|
public T Value
|
|
{
|
|
get => mValue;
|
|
set
|
|
{
|
|
if (!value.Equals(mValue))
|
|
{
|
|
mValue = value;
|
|
OnValueChanged?.Invoke(mValue);
|
|
}
|
|
}
|
|
}
|
|
|
|
public System.Action<T> OnValueChanged;
|
|
}
|
|
public class BindablePropertyDic<T1,T2> where T2: class
|
|
{
|
|
private Dictionary<T1, T2> _value = new Dictionary<T1, T2>();
|
|
public Dictionary<T1, T2> 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<T1, T2>();
|
|
}
|
|
|
|
public System.Action<Dictionary<T1, T2>> OnValueChanged;
|
|
}
|
|
} |