public void RegisterDelayedAction(IGameAction action, float delayInSeconds, ActionCompletedCallback callback = null)
        {
            delayedActions.Add(action);
            delayedActionsTime.Add(delayInSeconds);

            RegisterCallback(action, callback);
        }
 protected void RegisterCallback(IGameAction action, ActionCompletedCallback callback)
 {
     if (callback != null && !callbacks.ContainsKey(action))
     {
         callbacks.Add(action, callback);
         action.OnGameActionFinished += OnGameActionFinished;
     }
 }
        public void FireAction(IGameAction action, IGameObject target, ActionCompletedCallback callback = null, float delay = 0f)
        {
            action.Parent = Parent;
            action.Target = target;

            if (delay > 0f)
            {
                actionManager.RegisterDelayedAction(action, delay, callback);    
            }
            else
            {
                actionManager.RegisterAction(action, callback);
            }
        }
 public void RegisterAction(IGameAction action, ActionCompletedCallback callback = null)
 {
     addNextUpdate.Add(action);
     RegisterCallback(action, callback);
 }