private static void ImportTransitions(AnimatorStateMachine stateMachine, ChildAnimatorState[] states) { var transitionEquality = new TransitionEqualityComparer(); foreach (var state in states) { foreach (var transition in state.state.transitions) { var fromState = FindStateByName(stateMachine, state.state.name); var toState = FindStateByName(stateMachine, transition.destinationState.name); AnimatorStateTransition newTransition = new AnimatorStateTransition(); newTransition.destinationState = toState; var originalCondition = transition.conditions[0]; var conditionCopy = new AnimatorCondition(); conditionCopy.mode = originalCondition.mode; conditionCopy.parameter = originalCondition.parameter; conditionCopy.threshold = originalCondition.threshold; newTransition.conditions = new AnimatorCondition[] { conditionCopy }; if (!fromState.transitions.Contains(newTransition, transitionEquality)) { fromState.AddTransition(newTransition); } } } }
public PlainStateMachineFake(IEqualityComparer <TState> stateComparer, IEqualityComparer <TTrigger> triggerComparer) { if (stateComparer == null) { throw new ArgumentNullException(nameof(stateComparer)); } if (triggerComparer == null) { throw new ArgumentNullException(nameof(triggerComparer)); } _stateComparer = new StateEqualityComparer(stateComparer); _triggerComparer = new TriggerEqualityComparer(triggerComparer); _transitionEqualityComparer = new TransitionEqualityComparer(_stateComparer, _triggerComparer); _states = new Dictionary <TState, IState>(_stateComparer); _transitions = new HashSet <Transition <TState, TTrigger> >(_transitionEqualityComparer); _guardConditions = new Dictionary <Transition <TState, TTrigger>, List <IGuardCondition> >(_transitionEqualityComparer); _stateEventHandlers = new Dictionary <TState, HashSet <IStateEventHandler> >(_stateComparer); _transitionCommandQueue = new Queue <TransitionCommand>(); }