public AnimationState Update(AnimationState currentState, String signal)
        {
            AnimationTransitionSignal specificTransition = new AnimationTransitionSignal (currentState.AnimationName, signal);
            AnimationTransitionSignal generalTransition = new AnimationTransitionSignal ("", signal);

            if (StateChanges.ContainsKey (specificTransition)) {
                AnimationTransitionResponse response = StateChanges [specificTransition];
                currentState.AnimationName = response.DestAnim;
                if (response.ResetFrameNumber) {
                    currentState.CurrentFrame = 0;
                }
            } else if (StateChanges.ContainsKey (generalTransition)) {
                AnimationTransitionResponse response = StateChanges [generalTransition];
                currentState.AnimationName = response.DestAnim;
                if (response.ResetFrameNumber) {
                    currentState.CurrentFrame = 0;
                }
            }

            return currentState;
        }
 /// <summary>
 /// Adds the state change.
 /// </summary>
 /// <param name="sourceAnimation">Source animation. If empty string, the animation change applies to all states.</param>
 /// <param name="signal">Signal.</param>
 /// <param name="destAnimation">Destination animation.</param>
 /// <param name="resetCount">If set to <c>true</c> reset count.</param>
 public void AddStateChange(String sourceAnimation, String signal, String destAnimation, bool resetCount)
 {
     AnimationTransitionSignal source = new AnimationTransitionSignal (sourceAnimation, signal);
     AnimationTransitionResponse response = new AnimationTransitionResponse (destAnimation, resetCount);
     StateChanges.Add (source, response);
 }