Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- 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;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement