using System; namespace Svelto.ECS { public class DispatchOnSet { public DispatchOnSet(EGID senderID) { _senderID = senderID; } public T value { set { _value = value; if (_paused == false) _subscriber(_senderID, value); } } public void NotifyOnValueSet(Action action) { #if DEBUG && !PROFILE_SVELTO DBC.ECS.Check.Require(_subscriber == null, $"{this.GetType().Name}: listener already registered"); #endif _subscriber = action; _paused = false; } public void StopNotify() { _subscriber = null; _paused = true; } public void PauseNotify() { _paused = true; } public void ResumeNotify() { _paused = false; } protected T _value; readonly EGID _senderID; Action _subscriber; bool _paused; } }