public void UnregisterMovementStateChanged(int instance_id, Action <Transform, bool> callback) { MovementStateChangedEntry value = default(MovementStateChangedEntry); if (movementStateChangedHandlers.TryGetValue(instance_id, out value)) { value.handlers.Remove(callback); if (value.handlers.Count == 0) { movementStateChangedHandlers.Remove(instance_id); } } }
public void RegisterMovementStateChanged(Transform transform, Action <Transform, bool> handler) { int instanceID = transform.GetInstanceID(); MovementStateChangedEntry value = default(MovementStateChangedEntry); if (!movementStateChangedHandlers.TryGetValue(instanceID, out value)) { value = default(MovementStateChangedEntry); value.handlers = new List <Action <Transform, bool> >(); value.transform = transform; } value.handlers.Add(handler); movementStateChangedHandlers[instanceID] = value; }
private void RunMovementStateChangedCallbacks(int instance_id, bool state) { MovementStateChangedEntry value = default(MovementStateChangedEntry); if (movementStateChangedHandlers.TryGetValue(instance_id, out value)) { moveChangedCallbacksToRun.Clear(); moveChangedCallbacksToRun.AddRange(value.handlers); foreach (Action <Transform, bool> item in moveChangedCallbacksToRun) { if (value.handlers.Contains(item)) { item(value.transform, state); } } } }