|
|
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
-
-
- namespace TMPro
- {
- public class FastAction
- {
-
- LinkedList<System.Action> delegates = new LinkedList<System.Action>();
-
- Dictionary<System.Action, LinkedListNode<System.Action>> lookup = new Dictionary<System.Action, LinkedListNode<System.Action>>();
-
- public void Add(System.Action rhs)
- {
- if (lookup.ContainsKey(rhs)) return;
-
- lookup[rhs] = delegates.AddLast(rhs);
- }
-
- public void Remove(System.Action rhs)
- {
- LinkedListNode<System.Action> node;
- if (lookup.TryGetValue(rhs, out node))
- {
- lookup.Remove(rhs);
- delegates.Remove(node);
- }
- }
-
- public void Call()
- {
- var node = delegates.First;
- while (node != null)
- {
- node.Value();
- node = node.Next;
- }
- }
- }
-
-
- public class FastAction<A>
- {
-
- LinkedList<System.Action<A>> delegates = new LinkedList<System.Action<A>>();
-
- Dictionary<System.Action<A>, LinkedListNode<System.Action<A>>> lookup = new Dictionary<System.Action<A>, LinkedListNode<System.Action<A>>>();
-
- public void Add(System.Action<A> rhs)
- {
- if (lookup.ContainsKey(rhs)) return;
-
- lookup[rhs] = delegates.AddLast(rhs);
- }
-
- public void Remove(System.Action<A> rhs)
- {
- LinkedListNode<System.Action<A>> node;
- if (lookup.TryGetValue(rhs, out node))
- {
- lookup.Remove(rhs);
- delegates.Remove(node);
- }
- }
-
- public void Call(A a)
- {
- var node = delegates.First;
- while (node != null)
- {
- node.Value(a);
- node = node.Next;
- }
- }
- }
-
-
- public class FastAction<A, B>
- {
-
- LinkedList<System.Action<A, B>> delegates = new LinkedList<System.Action<A, B>>();
-
- Dictionary<System.Action<A, B>, LinkedListNode<System.Action<A, B>>> lookup = new Dictionary<System.Action<A, B>, LinkedListNode<System.Action<A, B>>>();
-
- public void Add(System.Action<A, B> rhs)
- {
- if (lookup.ContainsKey(rhs)) return;
-
- lookup[rhs] = delegates.AddLast(rhs);
- }
-
- public void Remove(System.Action<A, B> rhs)
- {
- LinkedListNode<System.Action<A, B>> node;
- if (lookup.TryGetValue(rhs, out node))
- {
- lookup.Remove(rhs);
- delegates.Remove(node);
- }
- }
-
- public void Call(A a, B b)
- {
- var node = delegates.First;
- while (node != null)
- {
- node.Value(a, b);
- node = node.Next;
- }
- }
- }
-
-
- public class FastAction<A, B, C>
- {
-
- LinkedList<System.Action<A, B, C>> delegates = new LinkedList<System.Action<A, B, C>>();
-
- Dictionary<System.Action<A, B, C>, LinkedListNode<System.Action<A, B, C>>> lookup = new Dictionary<System.Action<A, B, C>, LinkedListNode<System.Action<A, B, C>>>();
-
- public void Add(System.Action<A, B, C> rhs)
- {
- if (lookup.ContainsKey(rhs)) return;
-
- lookup[rhs] = delegates.AddLast(rhs);
- }
-
- public void Remove(System.Action<A, B, C> rhs)
- {
- LinkedListNode<System.Action<A, B, C>> node;
- if (lookup.TryGetValue(rhs, out node))
- {
- lookup.Remove(rhs);
- delegates.Remove(node);
- }
- }
-
- public void Call(A a, B b, C c)
- {
- var node = delegates.First;
- while (node != null)
- {
- node.Value(a, b, c);
- node = node.Next;
- }
- }
- }
- }
|