117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using UnityEngine;
 | 
						|
 | 
						|
namespace Passer {
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// A list of event handlers with a float parameter
 | 
						|
    /// </summary>
 | 
						|
    [System.Serializable]
 | 
						|
    public class FloatEventHandlers : EventHandlers<FloatEvent> {
 | 
						|
        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;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /// <summary>
 | 
						|
    /// An event handler calling a function with a float parameter
 | 
						|
    /// </summary>
 | 
						|
    [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);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
} |