public void AddSpurtEvent(AnimationState state, float triggerTime,
                              float spurtSpeed, float beforeTime, float spurtTime, float afterTime, string funcName, bool visible = true, float beforeSpeed = 0, float afterSpeed = 0, bool stopFrame = true)
    {
        AnimationEventWrapper e = new AnimationEventWrapper();

        e.animType = AnimationEventType.eMove;

        e.animState       = state;
        e.animationName   = state.name;
        e.triggerTime     = triggerTime;
        e.functionName    = funcName;
        e.floatParameter  = spurtSpeed;
        e.floatParameter2 = spurtTime;
        e.floatParameter3 = beforeTime;
        e.floatParameter4 = afterTime;
        e.floatParameter5 = beforeSpeed;
        e.floatParameter6 = afterSpeed;

        e.boolParameter  = visible;
        e.boolParameter2 = stopFrame;

        if (!animationEvents.ContainsKey(state.name))
        {
            animationEvents[state.name] = new List <AnimationEventWrapper>();
        }
        animationEvents[state.name].Add(e);
    }
    //isFree表示是否独立于施法单位
    public void AddEffectEvent(AnimationState state, float triggerTime, string effectRes, string root, bool isDetach, float duration, float delayDestroy,
                               Vector3 pos, Vector3 rotation, Vector3 scale, string funcName)
    {
        AnimationEventWrapper e = new AnimationEventWrapper();

        e.animType = AnimationEventType.eEffect;

        e.animState       = state;
        e.animationName   = state.name;
        e.triggerTime     = triggerTime;
        e.stringParameter = effectRes;
        e.functionName    = funcName;
        e.floatParameter  = duration;
        e.floatParameter2 = delayDestroy;
        e.boolParameter   = isDetach;
        e.objectParameter = root;

        e.vector3Parameter  = pos;
        e.vector3Parameter2 = rotation;
        e.vector3Parameter3 = scale;

        if (!animationEvents.ContainsKey(state.name))
        {
            animationEvents[state.name] = new List <AnimationEventWrapper>();
        }
        animationEvents[state.name].Add(e);
    }
 public void ResetBodyAnim(Animation anim)
 {
     foreach (KeyValuePair <string, List <AnimationEventWrapper> > kv in animationEvents)
     {
         for (int i = 0; i < kv.Value.Count; i++)
         {
             AnimationEventWrapper evt = kv.Value[i];
             if (anim.GetClip(evt.animationName))
             {
                 evt.animState = anim[evt.animationName];
             }
         }
     }
 }
    public void AddSoundEvent(AnimationState state, float triggerTime, string soundRes, string funcName)
    {
        AnimationEventWrapper e = new AnimationEventWrapper();

        e.animType = AnimationEventType.eSound;

        e.animState       = state;
        e.animationName   = state.name;
        e.triggerTime     = triggerTime;
        e.stringParameter = soundRes;
        e.functionName    = funcName;

        if (!animationEvents.ContainsKey(state.name))
        {
            animationEvents[state.name] = new List <AnimationEventWrapper>();
        }
        animationEvents[state.name].Add(e);
    }
    public void AddShakeEvent(AnimationState state, float triggerTime, float duration, float shakeRange, string funcName)
    {
        AnimationEventWrapper e = new AnimationEventWrapper();

        e.animType = AnimationEventType.eShake;

        e.animState      = state;
        e.animationName  = state.name;
        e.triggerTime    = triggerTime;
        e.functionName   = funcName;
        e.floatParameter = duration;
        e.floatParameter = shakeRange;

        if (!animationEvents.ContainsKey(state.name))
        {
            animationEvents[state.name] = new List <AnimationEventWrapper>();
        }
        animationEvents[state.name].Add(e);
    }