void CreateProxyCurve(SerializedProperty prop, AnimationClip clip, UnityObject owner, string propertyName)
        {
            var binding = AnimatedParameterUtility.GetCurveBinding(owner, propertyName);

            var originalCurve = m_OriginalOwner.hasCurves
                ? AnimationUtility.GetEditorCurve(m_OriginalOwner.curves, binding)
                : null;

            if (originalCurve != null)
            {
                AnimationUtility.SetEditorCurve(clip, binding, originalCurve);
            }
            else
            {
                var curve = new AnimationCurve();

                CurveEditUtility.AddKeyFrameToCurve(
                    curve, 0.0f, clip.frameRate, CurveEditUtility.GetKeyValue(prop),
                    prop.propertyType == SerializedPropertyType.Boolean);

                AnimationUtility.SetEditorCurve(clip, binding, curve);
            }

            m_PropertiesMap[binding] = prop;
        }
Exemple #2
0
        void SetProxyCurve(SerializedProperty prop, EditorCurveBinding binding)
        {
            var curve = new AnimationCurve();

            CurveEditUtility.AddKeyFrameToCurve(
                curve, 0.0f, m_ProxyCurves.frameRate, CurveEditUtility.GetKeyValue(prop),
                prop.propertyType == SerializedPropertyType.Boolean);
            AnimationUtility.SetEditorCurve(m_ProxyCurves, binding, curve);
        }
        private static void AddFloatKey(AnimationClip clip, EditorCurveBinding sourceBind, SerializedProperty prop, double time)
        {
            List <AnimationCurve>     list  = new List <AnimationCurve>();
            List <EditorCurveBinding> list2 = new List <EditorCurveBinding>();
            bool flag = false;
            AnimationClipCurveInfo curveInfo = AnimationClipCurveCache.Instance.GetCurveInfo(clip);

            for (int i = 0; i < curveInfo.bindings.Length; i++)
            {
                EditorCurveBinding item = curveInfo.bindings[i];
                if (item.get_type() == sourceBind.get_type())
                {
                    SerializedProperty serializedProperty = null;
                    AnimationCurve     animationCurve     = curveInfo.curves[i];
                    if (prop.get_propertyPath().Equals(item.propertyName))
                    {
                        serializedProperty = prop;
                    }
                    else if (item.propertyName.Contains(prop.get_propertyPath()))
                    {
                        serializedProperty = prop.get_serializedObject().FindProperty(item.propertyName);
                    }
                    if (serializedProperty != null)
                    {
                        float keyValue = CurveEditUtility.GetKeyValue(serializedProperty);
                        if (!float.IsNaN(keyValue))
                        {
                            flag = true;
                            CurveEditUtility.AddKeyFrameToCurve(animationCurve, (float)time, clip.get_frameRate(), keyValue, serializedProperty.get_propertyType() == 1);
                            list.Add(animationCurve);
                            list2.Add(item);
                        }
                    }
                }
            }
            if (!flag)
            {
                string propertyGroupName = AnimationWindowUtility.GetPropertyGroupName(sourceBind.propertyName);
                if (!prop.get_hasChildren())
                {
                    float keyValue2 = CurveEditUtility.GetKeyValue(prop);
                    if (!float.IsNaN(keyValue2))
                    {
                        list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), sourceBind.propertyName));
                        AnimationCurve animationCurve2 = new AnimationCurve();
                        CurveEditUtility.AddKeyFrameToCurve(animationCurve2, (float)time, clip.get_frameRate(), keyValue2, prop.get_propertyType() == 1);
                        list.Add(animationCurve2);
                    }
                }
                else if (prop.get_propertyType() == 4)
                {
                    list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), propertyGroupName + ".r"));
                    list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), propertyGroupName + ".g"));
                    list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), propertyGroupName + ".b"));
                    list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), propertyGroupName + ".a"));
                    Color colorValue = prop.get_colorValue();
                    for (int j = 0; j < 4; j++)
                    {
                        AnimationCurve animationCurve3 = new AnimationCurve();
                        CurveEditUtility.AddKeyFrameToCurve(animationCurve3, (float)time, clip.get_frameRate(), colorValue.get_Item(j), prop.get_propertyType() == 1);
                        list.Add(animationCurve3);
                    }
                }
                else
                {
                    prop = prop.Copy();
                    IEnumerator enumerator = prop.GetEnumerator();
                    try
                    {
                        while (enumerator.MoveNext())
                        {
                            SerializedProperty serializedProperty2 = (SerializedProperty)enumerator.Current;
                            list2.Add(EditorCurveBinding.FloatCurve(sourceBind.path, sourceBind.get_type(), serializedProperty2.get_propertyPath()));
                            AnimationCurve animationCurve4 = new AnimationCurve();
                            CurveEditUtility.AddKeyFrameToCurve(animationCurve4, (float)time, clip.get_frameRate(), CurveEditUtility.GetKeyValue(serializedProperty2), serializedProperty2.get_propertyType() == 1);
                            list.Add(animationCurve4);
                        }
                    }
                    finally
                    {
                        IDisposable disposable;
                        if ((disposable = (enumerator as IDisposable)) != null)
                        {
                            disposable.Dispose();
                        }
                    }
                }
            }
            CurveEditUtility.UpdateEditorCurves(clip, list2, list);
        }