protected AnimationOdds generateAnimation()
    {
        float         rand      = MathUtility.randomFloat(0.01f, 1.0f);
        int           count     = mAnimationList.Count;
        float         curMin    = 0.0f;
        AnimationOdds animation = null;

        for (int i = 0; i < count; ++i)
        {
            if (rand > curMin && rand <= curMin + mAnimationList[i].mOdds)
            {
                animation = mAnimationList[i];
                break;
            }
            curMin += mAnimationList[i].mOdds;
        }
        return(animation);
    }
    public override void enter(StateParam param)
    {
        mCharacterManager.activeCharacter(mPlayer, true);
        RoleDisplay scene = mSceneSystem.getScene <RoleDisplay>(GameDefine.ROLE_DISPLAY);

        ObjectTools.MOVE_OBJECT_EX(mPlayer, scene.mRolePosition1, scene.mRolePosition0, 1.0f, onMoveDone);
        mPlayer.resetRotation();
        // 设置静止状态拖尾,播放骑行动作
        mPlayer.activeTrail(true);
        AnimationOdds anim = generateAnimation();

        mAnimation.Play(anim.mAnimName);
        mAnimation[anim.mAnimName].speed = 1.5f;
        mAnimation.PlayQueued(anim.mNextAnim);
        mAnimation[anim.mNextAnim + GameDefine.QUEUE_SUFFIX].speed = 1.5f;
        mPlayer.getSelectAnimation().Clear();
        mPlayer.getSelectAnimation().Add(anim.mAnimName);
        mPlayer.getSelectAnimation().Add(anim.mNextAnim);
    }