protected void _requestTransition(
            SSAnimationStateMachine.TransitionInfo transition, float transitionTime)
        {
            _activeState = transition.target;

            if (_activeState.animation == null)
            {
                if (transitionTime == 0)
                {
                    _interChannelFadeIntensity = 0f;
                    _interChannelFadeVelocity  = 0f;
                }
                else
                {
                    _interChannelFadeVelocity = -_interChannelFadeIntensity / transitionTime;
                }
            }
            else                 // animation != null
            {
                if (transitionTime == 0)
                {
                    _interChannelFadeIntensity = 1f;
                    _interChannelFadeVelocity  = 0f;
                }
                else
                {
                    _interChannelFadeVelocity = (1f - _interChannelFadeIntensity) / transitionTime;
                }
            }

            _channelManager.playAnimation(_activeState.animation, transitionTime);
        }
        protected void _forceState(SSAnimationStateMachine.AnimationState targetState)
        {
            _activeState = targetState;

            _interChannelFadeVelocity = 0f;
            if (_activeState.animation == null)
            {
                _interChannelFadeIntensity = 0f;
            }
            else
            {
                _interChannelFadeIntensity = 1f;
            }

            _channelManager.playAnimation(_activeState.animation, 0f);
        }
        protected void _requestTransition(
			SSAnimationStateMachine.TransitionInfo transition, float transitionTime)
        {
            _activeState = transition.target;

            if (_activeState.animation == null) {
                if (transitionTime == 0) {
                    _interChannelFadeIntensity = 0f;
                    _interChannelFadeVelocity = 0f;
                } else {
                    _interChannelFadeVelocity = -_interChannelFadeIntensity / transitionTime;
                }
            } else { // animation != null
                if (transitionTime == 0) {
                    _interChannelFadeIntensity = 1f;
                    _interChannelFadeVelocity = 0f;
                } else {
                    _interChannelFadeVelocity = (1f - _interChannelFadeIntensity) / transitionTime;
                }
            }

            _channelManager.playAnimation(_activeState.animation, transitionTime);
        }
        protected void _forceState(SSAnimationStateMachine.AnimationState targetState)
        {
            _activeState = targetState;

            _interChannelFadeVelocity = 0f;
            if (_activeState.animation == null) {
                _interChannelFadeIntensity = 0f;
            } else {
                _interChannelFadeIntensity = 1f;
            }

            _channelManager.playAnimation(_activeState.animation, 0f);
        }