Exemple #1
0
    private void RefreshDic()
    {
        _dic.Clear();
        EditorCurveBinding[] curveBinding = AnimationUtility.GetCurveBindings(Clip);

        foreach (var cb in curveBinding)
        {
            if (cb.propertyName.StartsWith("m_LocalPosition"))
            {
                AnimationCurveVector3 c;
                if (!_dic.TryGetValue(cb.path, out c))
                {
                    c = new AnimationCurveVector3();
                    _dic.Add(cb.path, c);
                }

                if (cb.propertyName.EndsWith(".x"))
                {
                    c.X = AnimationUtility.GetEditorCurve(Clip, cb);
                }
                else if (cb.propertyName.EndsWith(".y"))
                {
                    c.Y = AnimationUtility.GetEditorCurve(Clip, cb);
                }
                else if (cb.propertyName.EndsWith(".z"))
                {
                    c.Z = AnimationUtility.GetEditorCurve(Clip, cb);
                }

                c.Length = Clip.length;
            }
        }
    }
Exemple #2
0
    private List <Vector3> Extract(AnimationCurveVector3 c, float length)
    {
        List <Vector3> result     = new List <Vector3>();
        int            frameCount = (int)(length / Time.fixedDeltaTime);

        for (int i = 0; i < frameCount + 1; i++)
        {
            float time = i * Time.fixedDeltaTime;
            float x    = c.X.Evaluate(time);
            float y    = c.Y.Evaluate(time);
            float z    = c.Y.Evaluate(time);
            result.Add(new Vector3(x, y, z));
        }

        return(result);
    }