Beispiel #1
0
    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);
            }
        };
    }
Beispiel #2
0
 public static void DestroyData(this UnityEvent e, IDragonSubscriber data)
 {
     e.AddListener(() => DragonStatic.Destroy(data.DragonStore));
 }
Beispiel #3
0
 public static void Prioritize(this UnityEvent e, IDragonSubscriber data)
 {
     e.AddListener(() => data.DragonStore.Prioritize());
 }