private static UndoPropertyModification[] FilterRotationModifications(IAnimationRecordingState state, ref Dictionary <object, AnimationRecording.RotationModification> rotationModifications)
        {
            AnimationClip activeAnimationClip  = state.activeAnimationClip;
            GameObject    activeRootGameObject = state.activeRootGameObject;
            List <object> list = new List <object>();
            List <UndoPropertyModification> list2 = new List <UndoPropertyModification>();

            foreach (KeyValuePair <object, AnimationRecording.RotationModification> current in rotationModifications)
            {
                AnimationRecording.RotationModification value = current.Value;
                if (state.DiscardModification(value.lastQuatModification.currentValue))
                {
                    AnimationRecording.DiscardRotationModification(value, ref list2);
                    list.Add(current.Key);
                }
                else
                {
                    EditorCurveBinding editorCurveBinding = default(EditorCurveBinding);
                    if (AnimationUtility.PropertyModificationToEditorCurveBinding(value.lastQuatModification.currentValue, activeRootGameObject, out editorCurveBinding) == null)
                    {
                        AnimationRecording.DiscardRotationModification(value, ref list2);
                        list.Add(current.Key);
                    }
                }
            }
            foreach (object current2 in list)
            {
                rotationModifications.Remove(current2);
            }
            return(list2.ToArray());
        }
 private static void DiscardRotationModification(AnimationRecording.RotationModification rotationModification, ref List <UndoPropertyModification> discardedModifications)
 {
     if (rotationModification.x.currentValue != null)
     {
         discardedModifications.Add(rotationModification.x);
     }
     if (rotationModification.y.currentValue != null)
     {
         discardedModifications.Add(rotationModification.y);
     }
     if (rotationModification.z.currentValue != null)
     {
         discardedModifications.Add(rotationModification.z);
     }
     if (rotationModification.w.currentValue != null)
     {
         discardedModifications.Add(rotationModification.w);
     }
     if (rotationModification.eulerX.currentValue != null)
     {
         discardedModifications.Add(rotationModification.eulerX);
     }
     if (rotationModification.eulerY.currentValue != null)
     {
         discardedModifications.Add(rotationModification.eulerY);
     }
     if (rotationModification.eulerZ.currentValue != null)
     {
         discardedModifications.Add(rotationModification.eulerZ);
     }
 }
 private static void CollectRotationModifications(AnimationWindowState state, ref UndoPropertyModification[] modifications, ref Dictionary<object, AnimationRecording.RotationModification> rotationModifications)
 {
   List<UndoPropertyModification> propertyModificationList = new List<UndoPropertyModification>();
   foreach (UndoPropertyModification propertyModification in modifications)
   {
     EditorCurveBinding binding = new EditorCurveBinding();
     PropertyModification previousValue = propertyModification.previousValue;
     AnimationUtility.PropertyModificationToEditorCurveBinding(previousValue, state.activeRootGameObject, out binding);
     if (binding.propertyName.StartsWith("m_LocalRotation"))
     {
       AnimationRecording.RotationModification rotationModification;
       if (!rotationModifications.TryGetValue((object) previousValue.target, out rotationModification))
       {
         rotationModification = new AnimationRecording.RotationModification();
         rotationModifications[(object) previousValue.target] = rotationModification;
       }
       if (binding.propertyName.EndsWith("x"))
         rotationModification.x = propertyModification;
       else if (binding.propertyName.EndsWith("y"))
         rotationModification.y = propertyModification;
       else if (binding.propertyName.EndsWith("z"))
         rotationModification.z = propertyModification;
       else if (binding.propertyName.EndsWith("w"))
         rotationModification.w = propertyModification;
       rotationModification.lastQuatModification = propertyModification;
     }
     else if (previousValue.propertyPath.StartsWith("m_LocalEulerAnglesHint"))
     {
       AnimationRecording.RotationModification rotationModification;
       if (!rotationModifications.TryGetValue((object) previousValue.target, out rotationModification))
       {
         rotationModification = new AnimationRecording.RotationModification();
         rotationModifications[(object) previousValue.target] = rotationModification;
       }
       if (previousValue.propertyPath.EndsWith("x"))
         rotationModification.eulerX = propertyModification;
       else if (previousValue.propertyPath.EndsWith("y"))
         rotationModification.eulerY = propertyModification;
       else if (previousValue.propertyPath.EndsWith("z"))
         rotationModification.eulerZ = propertyModification;
     }
     else
       propertyModificationList.Add(propertyModification);
   }
   if (propertyModificationList.Count <= 0)
     return;
   modifications = propertyModificationList.ToArray();
 }
Example #4
0
        private static void CollectRotationModifications(IAnimationRecordingState state, ref UndoPropertyModification[] modifications, ref Dictionary <object, AnimationRecording.RotationModification> rotationModifications)
        {
            List <UndoPropertyModification> list = new List <UndoPropertyModification>();

            UndoPropertyModification[] array = modifications;
            for (int i = 0; i < array.Length; i++)
            {
                UndoPropertyModification undoPropertyModification = array[i];
                EditorCurveBinding       editorCurveBinding       = default(EditorCurveBinding);
                PropertyModification     previousValue            = undoPropertyModification.previousValue;
                AnimationUtility.PropertyModificationToEditorCurveBinding(previousValue, state.activeRootGameObject, out editorCurveBinding);
                if (editorCurveBinding.propertyName.StartsWith("m_LocalRotation"))
                {
                    AnimationRecording.RotationModification rotationModification;
                    if (!rotationModifications.TryGetValue(previousValue.target, out rotationModification))
                    {
                        rotationModification = new AnimationRecording.RotationModification();
                        rotationModifications[previousValue.target] = rotationModification;
                    }
                    if (editorCurveBinding.propertyName.EndsWith("x"))
                    {
                        rotationModification.x = undoPropertyModification;
                    }
                    else if (editorCurveBinding.propertyName.EndsWith("y"))
                    {
                        rotationModification.y = undoPropertyModification;
                    }
                    else if (editorCurveBinding.propertyName.EndsWith("z"))
                    {
                        rotationModification.z = undoPropertyModification;
                    }
                    else if (editorCurveBinding.propertyName.EndsWith("w"))
                    {
                        rotationModification.w = undoPropertyModification;
                    }
                    rotationModification.lastQuatModification = undoPropertyModification;
                }
                else if (previousValue.propertyPath.StartsWith("m_LocalEulerAnglesHint"))
                {
                    AnimationRecording.RotationModification rotationModification2;
                    if (!rotationModifications.TryGetValue(previousValue.target, out rotationModification2))
                    {
                        rotationModification2 = new AnimationRecording.RotationModification();
                        rotationModifications[previousValue.target] = rotationModification2;
                    }
                    rotationModification2.useEuler = true;
                    if (previousValue.propertyPath.EndsWith("x"))
                    {
                        rotationModification2.eulerX = undoPropertyModification;
                    }
                    else if (previousValue.propertyPath.EndsWith("y"))
                    {
                        rotationModification2.eulerY = undoPropertyModification;
                    }
                    else if (previousValue.propertyPath.EndsWith("z"))
                    {
                        rotationModification2.eulerZ = undoPropertyModification;
                    }
                }
                else
                {
                    list.Add(undoPropertyModification);
                }
            }
            if (rotationModifications.Count > 0)
            {
                modifications = list.ToArray();
            }
        }
Example #5
0
        private static void ProcessRotationModifications(IAnimationRecordingState state, ref UndoPropertyModification[] modifications)
        {
            Dictionary <object, AnimationRecording.RotationModification> dictionary = new Dictionary <object, AnimationRecording.RotationModification>();

            AnimationRecording.CollectRotationModifications(state, ref modifications, ref dictionary);
            foreach (KeyValuePair <object, AnimationRecording.RotationModification> current in dictionary)
            {
                AnimationRecording.RotationModification value = current.Value;
                Transform transform = current.Key as Transform;
                if (!(transform == null))
                {
                    EditorCurveBinding editorCurveBinding = default(EditorCurveBinding);
                    Type type = AnimationUtility.PropertyModificationToEditorCurveBinding(value.lastQuatModification.currentValue, state.activeRootGameObject, out editorCurveBinding);
                    if (type != null)
                    {
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.x);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.y);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.z);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.w);
                        if (value.useEuler)
                        {
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerX);
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerY);
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerZ);
                            Vector3 localEulerAngles  = transform.GetLocalEulerAngles(RotationOrder.OrderZXY);
                            Vector3 localEulerAngles2 = transform.GetLocalEulerAngles(RotationOrder.OrderZXY);
                            object  obj;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerX.previousValue, editorCurveBinding, out obj))
                            {
                                localEulerAngles.x = (float)obj;
                            }
                            object obj2;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerY.previousValue, editorCurveBinding, out obj2))
                            {
                                localEulerAngles.y = (float)obj2;
                            }
                            object obj3;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerZ.previousValue, editorCurveBinding, out obj3))
                            {
                                localEulerAngles.z = (float)obj3;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerX.currentValue, editorCurveBinding, out obj))
                            {
                                localEulerAngles2.x = (float)obj;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerY.currentValue, editorCurveBinding, out obj2))
                            {
                                localEulerAngles2.y = (float)obj2;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerZ.currentValue, editorCurveBinding, out obj3))
                            {
                                localEulerAngles2.z = (float)obj3;
                            }
                            AnimationRecording.AddRotationKey(state, editorCurveBinding, type, localEulerAngles, localEulerAngles2);
                        }
                        else
                        {
                            Quaternion localRotation  = transform.localRotation;
                            Quaternion localRotation2 = transform.localRotation;
                            object     obj4;
                            if (AnimationRecording.ValueFromPropertyModification(value.x.previousValue, editorCurveBinding, out obj4))
                            {
                                localRotation.x = (float)obj4;
                            }
                            object obj5;
                            if (AnimationRecording.ValueFromPropertyModification(value.y.previousValue, editorCurveBinding, out obj5))
                            {
                                localRotation.y = (float)obj5;
                            }
                            object obj6;
                            if (AnimationRecording.ValueFromPropertyModification(value.z.previousValue, editorCurveBinding, out obj6))
                            {
                                localRotation.z = (float)obj6;
                            }
                            object obj7;
                            if (AnimationRecording.ValueFromPropertyModification(value.w.previousValue, editorCurveBinding, out obj7))
                            {
                                localRotation.w = (float)obj7;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.x.currentValue, editorCurveBinding, out obj4))
                            {
                                localRotation2.x = (float)obj4;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.y.currentValue, editorCurveBinding, out obj5))
                            {
                                localRotation2.y = (float)obj5;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.z.currentValue, editorCurveBinding, out obj6))
                            {
                                localRotation2.z = (float)obj6;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.w.currentValue, editorCurveBinding, out obj7))
                            {
                                localRotation2.w = (float)obj7;
                            }
                            AnimationRecording.AddRotationKey(state, editorCurveBinding, type, localRotation.eulerAngles, localRotation2.eulerAngles);
                        }
                    }
                }
            }
        }
Example #6
0
        private static void ProcessAnimatorModifications(IAnimationRecordingState state, ref Dictionary <object, AnimationRecording.Vector3Modification> positionModifications, ref Dictionary <object, AnimationRecording.RotationModification> rotationModifications, ref Dictionary <object, AnimationRecording.Vector3Modification> scaleModifications)
        {
            Dictionary <object, AnimationRecording.RootMotionModification> dictionary = new Dictionary <object, AnimationRecording.RootMotionModification>();
            AnimationClip activeAnimationClip  = state.activeAnimationClip;
            GameObject    activeRootGameObject = state.activeRootGameObject;
            Animator      component            = activeRootGameObject.GetComponent <Animator>();
            bool          flag  = component != null && component.isHuman;
            bool          flag2 = component != null && component.hasRootMotion;
            bool          flag3 = component != null && component.applyRootMotion;
            List <object> list  = new List <object>();

            foreach (KeyValuePair <object, AnimationRecording.Vector3Modification> current in positionModifications)
            {
                AnimationRecording.Vector3Modification value = current.Value;
                Transform transform = current.Key as Transform;
                if (!(transform == null))
                {
                    EditorCurveBinding editorCurveBinding = default(EditorCurveBinding);
                    if (AnimationUtility.PropertyModificationToEditorCurveBinding(value.last.currentValue, state.activeRootGameObject, out editorCurveBinding) != null)
                    {
                        bool flag4 = activeRootGameObject.transform == transform;
                        bool flag5 = (flag || flag2 || flag3) && flag4;
                        bool flag6 = flag && !flag4 && component.IsBoneTransform(transform);
                        if (flag6)
                        {
                            Debug.LogWarning("Keyframing translation on humanoid rig is not supported!", transform);
                            list.Add(current.Key);
                        }
                        else if (flag5)
                        {
                            AnimationRecording.RootMotionModification rootMotionModification;
                            if (!dictionary.TryGetValue(transform, out rootMotionModification))
                            {
                                rootMotionModification = new AnimationRecording.RootMotionModification();
                                dictionary[transform]  = rootMotionModification;
                            }
                            rootMotionModification.lastP = value.last;
                            rootMotionModification.px    = value.x;
                            rootMotionModification.py    = value.y;
                            rootMotionModification.pz    = value.z;
                            list.Add(current.Key);
                        }
                    }
                }
            }
            foreach (object current2 in list)
            {
                positionModifications.Remove(current2);
            }
            List <object> list2 = new List <object>();

            foreach (KeyValuePair <object, AnimationRecording.RotationModification> current3 in rotationModifications)
            {
                AnimationRecording.RotationModification value2 = current3.Value;
                Transform transform2 = current3.Key as Transform;
                if (!(transform2 == null))
                {
                    EditorCurveBinding editorCurveBinding2 = default(EditorCurveBinding);
                    if (AnimationUtility.PropertyModificationToEditorCurveBinding(value2.lastQuatModification.currentValue, state.activeRootGameObject, out editorCurveBinding2) != null)
                    {
                        bool flag7 = activeRootGameObject.transform == transform2;
                        bool flag8 = (flag || flag2 || flag3) && flag7;
                        bool flag9 = flag && !flag7 && component.IsBoneTransform(transform2);
                        if (flag9)
                        {
                            Debug.LogWarning("Keyframing rotation on humanoid rig is not supported!", transform2);
                            list2.Add(current3.Key);
                        }
                        else if (flag8)
                        {
                            AnimationRecording.RootMotionModification rootMotionModification2;
                            if (!dictionary.TryGetValue(transform2, out rootMotionModification2))
                            {
                                rootMotionModification2 = new AnimationRecording.RootMotionModification();
                                dictionary[transform2]  = rootMotionModification2;
                            }
                            rootMotionModification2.lastR = value2.lastQuatModification;
                            rootMotionModification2.rx    = value2.x;
                            rootMotionModification2.ry    = value2.y;
                            rootMotionModification2.rz    = value2.z;
                            rootMotionModification2.rw    = value2.w;
                            list2.Add(current3.Key);
                        }
                    }
                }
            }
            foreach (object current4 in list2)
            {
                rotationModifications.Remove(current4);
            }
            List <object> list3 = new List <object>();

            foreach (KeyValuePair <object, AnimationRecording.Vector3Modification> current5 in scaleModifications)
            {
                AnimationRecording.Vector3Modification value3 = current5.Value;
                Transform transform3 = current5.Key as Transform;
                if (!(transform3 == null))
                {
                    EditorCurveBinding editorCurveBinding3 = default(EditorCurveBinding);
                    if (AnimationUtility.PropertyModificationToEditorCurveBinding(value3.last.currentValue, state.activeRootGameObject, out editorCurveBinding3) != null)
                    {
                        bool flag10 = activeRootGameObject.transform == transform3;
                        bool flag11 = flag && !flag10 && component.IsBoneTransform(transform3);
                        if (flag11)
                        {
                            Debug.LogWarning("Keyframing scale on humanoid rig is not supported!", transform3);
                            list3.Add(current5.Key);
                        }
                    }
                }
            }
            foreach (object current6 in list3)
            {
                scaleModifications.Remove(current6);
            }
            AnimationRecording.ProcessRootMotionModifications(state, ref dictionary);
        }
Example #7
0
        private static void ProcessRotationModifications(IAnimationRecordingState state, ref Dictionary <object, AnimationRecording.RotationModification> rotationModifications)
        {
            AnimationClip activeAnimationClip  = state.activeAnimationClip;
            GameObject    activeRootGameObject = state.activeRootGameObject;

            foreach (KeyValuePair <object, AnimationRecording.RotationModification> current in rotationModifications)
            {
                AnimationRecording.RotationModification value = current.Value;
                Transform transform = current.Key as Transform;
                if (!(transform == null))
                {
                    EditorCurveBinding editorCurveBinding = default(EditorCurveBinding);
                    Type type = AnimationUtility.PropertyModificationToEditorCurveBinding(value.lastQuatModification.currentValue, state.activeRootGameObject, out editorCurveBinding);
                    if (type != null)
                    {
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.x);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.y);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.z);
                        AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.w);
                        Quaternion localRotation  = transform.localRotation;
                        Quaternion localRotation2 = transform.localRotation;
                        object     obj;
                        if (AnimationRecording.ValueFromPropertyModification(value.x.previousValue, editorCurveBinding, out obj))
                        {
                            localRotation.x = (float)obj;
                        }
                        object obj2;
                        if (AnimationRecording.ValueFromPropertyModification(value.y.previousValue, editorCurveBinding, out obj2))
                        {
                            localRotation.y = (float)obj2;
                        }
                        object obj3;
                        if (AnimationRecording.ValueFromPropertyModification(value.z.previousValue, editorCurveBinding, out obj3))
                        {
                            localRotation.z = (float)obj3;
                        }
                        object obj4;
                        if (AnimationRecording.ValueFromPropertyModification(value.w.previousValue, editorCurveBinding, out obj4))
                        {
                            localRotation.w = (float)obj4;
                        }
                        if (AnimationRecording.ValueFromPropertyModification(value.x.currentValue, editorCurveBinding, out obj))
                        {
                            localRotation2.x = (float)obj;
                        }
                        if (AnimationRecording.ValueFromPropertyModification(value.y.currentValue, editorCurveBinding, out obj2))
                        {
                            localRotation2.y = (float)obj2;
                        }
                        if (AnimationRecording.ValueFromPropertyModification(value.z.currentValue, editorCurveBinding, out obj3))
                        {
                            localRotation2.z = (float)obj3;
                        }
                        if (AnimationRecording.ValueFromPropertyModification(value.w.currentValue, editorCurveBinding, out obj4))
                        {
                            localRotation2.w = (float)obj4;
                        }
                        if (value.useEuler)
                        {
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerX);
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerY);
                            AnimationRecording.AddRotationPropertyModification(state, editorCurveBinding, value.eulerZ);
                            Vector3 vector  = transform.GetLocalEulerAngles(RotationOrder.OrderZXY);
                            Vector3 vector2 = vector;
                            object  obj5;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerX.previousValue, editorCurveBinding, out obj5))
                            {
                                vector.x = (float)obj5;
                            }
                            object obj6;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerY.previousValue, editorCurveBinding, out obj6))
                            {
                                vector.y = (float)obj6;
                            }
                            object obj7;
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerZ.previousValue, editorCurveBinding, out obj7))
                            {
                                vector.z = (float)obj7;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerX.currentValue, editorCurveBinding, out obj5))
                            {
                                vector2.x = (float)obj5;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerY.currentValue, editorCurveBinding, out obj6))
                            {
                                vector2.y = (float)obj6;
                            }
                            if (AnimationRecording.ValueFromPropertyModification(value.eulerZ.currentValue, editorCurveBinding, out obj7))
                            {
                                vector2.z = (float)obj7;
                            }
                            vector  = AnimationUtility.GetClosestEuler(localRotation, vector, RotationOrder.OrderZXY);
                            vector2 = AnimationUtility.GetClosestEuler(localRotation2, vector2, RotationOrder.OrderZXY);
                            AnimationRecording.AddRotationKey(state, editorCurveBinding, type, vector, vector2);
                        }
                        else
                        {
                            Vector3 localEulerAngles = transform.GetLocalEulerAngles(RotationOrder.OrderZXY);
                            Vector3 closestEuler     = AnimationUtility.GetClosestEuler(localRotation, localEulerAngles, RotationOrder.OrderZXY);
                            Vector3 closestEuler2    = AnimationUtility.GetClosestEuler(localRotation2, localEulerAngles, RotationOrder.OrderZXY);
                            AnimationRecording.AddRotationKey(state, editorCurveBinding, type, closestEuler, closestEuler2);
                        }
                    }
                }
            }
        }
Example #8
0
        private static void CollectRotationModifications(AnimationWindowState state, ref UndoPropertyModification[] modifications, ref Dictionary <object, AnimationRecording.RotationModification> rotationModifications)
        {
            List <UndoPropertyModification> propertyModificationList = new List <UndoPropertyModification>();

            foreach (UndoPropertyModification propertyModification in modifications)
            {
                EditorCurveBinding   binding       = new EditorCurveBinding();
                PropertyModification previousValue = propertyModification.previousValue;
                AnimationUtility.PropertyModificationToEditorCurveBinding(previousValue, state.activeRootGameObject, out binding);
                if (binding.propertyName.StartsWith("m_LocalRotation"))
                {
                    AnimationRecording.RotationModification rotationModification;
                    if (!rotationModifications.TryGetValue((object)previousValue.target, out rotationModification))
                    {
                        rotationModification = new AnimationRecording.RotationModification();
                        rotationModifications[(object)previousValue.target] = rotationModification;
                    }
                    if (binding.propertyName.EndsWith("x"))
                    {
                        rotationModification.x = propertyModification;
                    }
                    else if (binding.propertyName.EndsWith("y"))
                    {
                        rotationModification.y = propertyModification;
                    }
                    else if (binding.propertyName.EndsWith("z"))
                    {
                        rotationModification.z = propertyModification;
                    }
                    else if (binding.propertyName.EndsWith("w"))
                    {
                        rotationModification.w = propertyModification;
                    }
                    rotationModification.lastQuatModification = propertyModification;
                }
                else if (previousValue.propertyPath.StartsWith("m_LocalEulerAnglesHint"))
                {
                    AnimationRecording.RotationModification rotationModification;
                    if (!rotationModifications.TryGetValue((object)previousValue.target, out rotationModification))
                    {
                        rotationModification = new AnimationRecording.RotationModification();
                        rotationModifications[(object)previousValue.target] = rotationModification;
                    }
                    if (previousValue.propertyPath.EndsWith("x"))
                    {
                        rotationModification.eulerX = propertyModification;
                    }
                    else if (previousValue.propertyPath.EndsWith("y"))
                    {
                        rotationModification.eulerY = propertyModification;
                    }
                    else if (previousValue.propertyPath.EndsWith("z"))
                    {
                        rotationModification.eulerZ = propertyModification;
                    }
                }
                else
                {
                    propertyModificationList.Add(propertyModification);
                }
            }
            if (propertyModificationList.Count <= 0)
            {
                return;
            }
            modifications = propertyModificationList.ToArray();
        }
Example #9
0
        private static void ProcessRotationModifications(AnimationWindowState state, ref UndoPropertyModification[] modifications)
        {
            Dictionary <object, AnimationRecording.RotationModification> rotationModifications = new Dictionary <object, AnimationRecording.RotationModification>();

            AnimationRecording.CollectRotationModifications(state, ref modifications, ref rotationModifications);
            using (Dictionary <object, AnimationRecording.RotationModification> .Enumerator enumerator = rotationModifications.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    AnimationRecording.RotationModification rotationModification = enumerator.Current.Value;
                    EditorCurveBinding binding            = new EditorCurveBinding();
                    System.Type        editorCurveBinding = AnimationUtility.PropertyModificationToEditorCurveBinding(rotationModification.lastQuatModification.currentValue, state.activeRootGameObject, out binding);
                    Quaternion         localRotation1     = state.activeRootGameObject.transform.localRotation;
                    Quaternion         localRotation2     = state.activeRootGameObject.transform.localRotation;
                    object             outObject1;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.x.previousValue, binding, out outObject1))
                    {
                        localRotation1.x = (float)outObject1;
                    }
                    object outObject2;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.y.previousValue, binding, out outObject2))
                    {
                        localRotation1.y = (float)outObject2;
                    }
                    object outObject3;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.z.previousValue, binding, out outObject3))
                    {
                        localRotation1.z = (float)outObject3;
                    }
                    object outObject4;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.w.previousValue, binding, out outObject4))
                    {
                        localRotation1.w = (float)outObject4;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.x.currentValue, binding, out outObject1))
                    {
                        localRotation2.x = (float)outObject1;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.y.currentValue, binding, out outObject2))
                    {
                        localRotation2.y = (float)outObject2;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.z.currentValue, binding, out outObject3))
                    {
                        localRotation2.z = (float)outObject3;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.w.currentValue, binding, out outObject4))
                    {
                        localRotation2.w = (float)outObject4;
                    }
                    Vector3 eulerAngles1 = localRotation1.eulerAngles;
                    Vector3 eulerAngles2 = localRotation2.eulerAngles;
                    object  outObject5;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerX.previousValue, binding, out outObject5))
                    {
                        eulerAngles1.x = (float)outObject5;
                    }
                    object outObject6;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerY.previousValue, binding, out outObject6))
                    {
                        eulerAngles1.y = (float)outObject6;
                    }
                    object outObject7;
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerZ.previousValue, binding, out outObject7))
                    {
                        eulerAngles1.z = (float)outObject7;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerX.currentValue, binding, out outObject5))
                    {
                        eulerAngles2.x = (float)outObject5;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerY.currentValue, binding, out outObject6))
                    {
                        eulerAngles2.y = (float)outObject6;
                    }
                    if (AnimationRecording.ValueFromPropertyModification(rotationModification.eulerZ.currentValue, binding, out outObject7))
                    {
                        eulerAngles2.z = (float)outObject7;
                    }
                    AnimationRecording.AddRotationKey(state, binding, editorCurveBinding, eulerAngles1, eulerAngles2);
                }
            }
        }