123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
-
-
- namespace TMPro
- {
- /// <summary>
- /// Alternative Action delegate with increased performance when adding or removing delegates.
- /// </summary>
- 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;
- }
- }
- }
-
- /// <summary>
- /// Alternative Action delegate with increased performance when adding or removing delegates.
- /// </summary>
- /// <typeparam name="A">The parameter of the method that this delegate encapsulates.</typeparam>
- 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;
- }
- }
- }
-
- /// <summary>
- /// Alternative Action delegate with increased performance when adding or removing delegates.
- /// </summary>
- /// <typeparam name="A">The first parameter of the method that this delegate encapsulates.</typeparam>
- /// <typeparam name="B">The second parameter of the method that this delegate encapsulates.</typeparam>
- 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;
- }
- }
- }
-
- /// <summary>
- /// Alternative Action delegate with increased performance when adding or removing delegates.
- /// </summary>
- /// <typeparam name="A">The first parameter of the method that this delegate encapsulates.</typeparam>
- /// <typeparam name="B">The second parameter of the method that this delegate encapsulates.</typeparam>
- /// <typeparam name="C">The third parameter of the method that this delegate encapsulates.</typeparam>
- 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;
- }
- }
- }
- }
|