123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- 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)
- {
- if (lookup.TryGetValue(rhs, out LinkedListNode<System.Action> 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)
- {
- if (lookup.TryGetValue(rhs, out LinkedListNode<System.Action<A>> 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)
- {
- if (lookup.TryGetValue(rhs, out LinkedListNode<System.Action<A, B>> 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)
- {
- if (lookup.TryGetValue(rhs, out LinkedListNode<System.Action<A, B, C>> 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;
- }
- }
- }
- }
|