AddRotationPropertyModification() private static method

private static AddRotationPropertyModification ( IAnimationRecordingState state, EditorCurveBinding baseBinding, UndoPropertyModification modification ) : void
state IAnimationRecordingState
baseBinding UnityEditor.EditorCurveBinding
modification UnityEditor.UndoPropertyModification
return void
Beispiel #1
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);
                        }
                    }
                }
            }
        }
Beispiel #2
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);
                        }
                    }
                }
            }
        }