public void OnChange(IDragonSubscriber subscriber, Action <T, T> action) { // Immediately get the gameobject in sync with state. _subscribers.Add(action); if (subscriber.IsActive) { action.Invoke(_value, _prevValue); } // Sync up state when gameobject enables & add to subscribers. subscriber.OnEnabled += () => { action.Invoke(_value, _prevValue); _subscribers.Add(action); }; subscriber.OnDisabled += () => { if (_subscribers.Contains(action)) { _subscribers.Remove(action); } }; subscriber.OnUnsubscribed += () => { if (_subscribers.Contains(action)) { _subscribers.Remove(action); } }; }
public static void DestroyData(this UnityEvent e, IDragonSubscriber data) { e.AddListener(() => DragonStatic.Destroy(data.DragonStore)); }
public static void Prioritize(this UnityEvent e, IDragonSubscriber data) { e.AddListener(() => data.DragonStore.Prioritize()); }