using UnityEngine;
namespace Passer {
///
/// A list of event handlers with a float parameter
///
[System.Serializable]
public class FloatEventHandlers : EventHandlers {
public float value {
get {
if (events == null || events.Count == 0)
return 0;
return events[0].value;
}
set {
foreach (FloatEvent floatEvent in events)
floatEvent.value = value;
}
}
}
///
/// An event handler calling a function with a float parameter
///
[System.Serializable]
public class FloatEvent : EventHandler {
public FloatEvent(Type newEventType = Type.OnChange) {
eventType = newEventType;
}
public float floatParameter;
public float floatTriggerLow = 0.01F;
public float floatTriggerHigh = 0.99F;
public float multiplicationFactor = 1;
public int intTriggerLow = 0;
public int intTriggerHigh = 1;
public virtual float value {
get { return _floatValue; }
set {
floatChanged = true;
_floatValue = value * multiplicationFactor;
bool newBoolValue = boolValue ? (value <= floatTriggerHigh) : (value <= floatTriggerLow);
if (boolInverse)
newBoolValue = !newBoolValue;
if (initialized)
boolChanged = (newBoolValue != boolValue);
else {
boolChanged = true;
initialized = true;
}
_boolValue = newBoolValue;
intChanged = true; // should be improved to rounded numbers
_intValue = (int)value;
Update();
}
}
//public virtual int intValue {
// get { return _intValue; }
// set {
// intChanged = (value != _intValue);
// _intValue = (int)(value * multiplicationFactor);
// bool newBoolValue = _boolValue ? (value >= intTriggerLow) : (value >= intTriggerHigh);
// boolChanged = (newBoolValue != _boolValue);
// _boolValue = newBoolValue;
// _floatValue = value;
// Update();
// }
//}
override protected void UpdateInt() {
if (CheckCondition(boolValue, boolChanged, intChanged)) {
if (functionCall.parameters[0].fromEvent)
functionCall.Execute(_intValue);
else
functionCall.Execute(functionCall.parameters[0].intConstant);
}
}
override protected void UpdateFloat() {
if (CheckCondition(boolValue, boolChanged, intChanged)) {
if (functionCall.parameters[0].fromEvent)
functionCall.Execute(_floatValue);
else
functionCall.Execute(functionCall.parameters[0].floatConstant);
}
}
protected override void UpdateStringInt(string s) {
if (CheckCondition(boolValue, boolChanged, intChanged)) {
if (functionCall.parameters[0].fromEvent)
functionCall.ExecuteString(s, _intValue);
else
functionCall.ExecuteString(s, functionCall.parameters[0].intConstant);
}
}
protected override void UpdateStringFloat(string s) {
if (CheckCondition(boolValue, boolChanged, floatChanged)) {
if (functionCall.parameters[0].fromEvent)
functionCall.ExecuteString(s, _floatValue);
else
functionCall.ExecuteString(s, functionCall.parameters[0].floatConstant);
}
}
}
}