using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Micosmo.SensorToolkit { [AddComponentMenu("Sensors/User Signals")] [HelpURL("https://micosmo.com/sensortoolkit2/docs/manual/sensors/user-signals")] public class UserSignals : Sensor { [Serializable] public class ObservableSignalList : ObservableList { } [SerializeField] ObservableSignalList inputSignals = new ObservableSignalList(); public ObservableSignalList InputSignals => inputSignals; #pragma warning disable public override event Action OnPulsed; public override void PulseAll() => Pulse(); protected override PulseJob GetPulseJob() { InputSignalsChangeHandler(); OnPulsed?.Invoke(); return default; } protected override void Awake() { base.Awake(); inputSignals.OnChanged += InputSignalsChangeHandler; InputSignalsChangeHandler(); } void OnDestroy() { inputSignals.OnChanged -= InputSignalsChangeHandler; } void OnValidate() { if (inputSignals == null) { inputSignals = new ObservableSignalList(); } inputSignals.OnValidate(); } List workList = new List(); void InputSignalsChangeHandler() { workList.Clear(); foreach (var signal in inputSignals) { workList.Add(signal); } UpdateAllSignals(workList); } } }