private ClipCurveData GetOrAddCurveData(string path)
        {
            ClipCurveData ret;

            if (!_curveDic.TryGetValue(path, out ret))
            {
                ret               = new ClipCurveData();
                ret.path          = path.Substring(path.LastIndexOf('/') + 1);
                ret.rotationCurve = new RotationCurve();
                ret.positionCurve = new Vector3Curve();
                ret.scaleCurve    = new Vector3Curve();
                _curveDic.Add(path, ret);
            }
            return(ret);
        }
        private void ProcessCurve(AnimationCurve curve, EditorCurveBinding binding)
        {
            ClipCurveData curveData = GetOrAddCurveData(binding.path);
            CurveType     curveType = GetCurveType(binding);

            switch (curveType)
            {
            case CurveType.Rotation:
                SetRotCurveData(curveData.rotationCurve, curve, binding.propertyName);
                break;

            case CurveType.Position:
                SetVector3CurveData(curveData.positionCurve, curve, binding.propertyName);
                break;

            case CurveType.Scale:
                SetVector3CurveData(curveData.scaleCurve, curve, binding.propertyName);
                break;

            default:
                break;
            }
        }