40 lines
1005 B
C#
40 lines
1005 B
C#
using UnityEngine;
|
|
|
|
namespace Cryville.Crtr.Config {
|
|
public abstract class PropertyValuePanel : MonoBehaviour {
|
|
IPropertyAdapter _property;
|
|
public void Init(IPropertyAdapter property) {
|
|
_property = property;
|
|
GetValue();
|
|
}
|
|
protected object[] Range { get { return _property.Range; } }
|
|
public object MappedValue { get; private set; }
|
|
private object m_rawValue;
|
|
public object RawValue {
|
|
get { return m_rawValue; }
|
|
set {
|
|
m_rawValue = value;
|
|
SetValue();
|
|
}
|
|
}
|
|
protected abstract void OnValueUpdated();
|
|
void GetValue() {
|
|
if (_property.SetMapped) {
|
|
MappedValue = _property.GetValue();
|
|
m_rawValue = _property.MapValueInverse(MappedValue);
|
|
}
|
|
else {
|
|
m_rawValue = _property.GetValue();
|
|
MappedValue = _property.MapValue(m_rawValue);
|
|
}
|
|
OnValueUpdated();
|
|
}
|
|
void SetValue() {
|
|
var outRaw = RawValue;
|
|
MappedValue = _property.MapValue(outRaw);
|
|
_property.SetValue(_property.SetMapped ? MappedValue : outRaw);
|
|
OnValueUpdated();
|
|
}
|
|
}
|
|
}
|