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); }