public override void OnInspectorGUI() { base.OnInspectorGUI(); base.get_serializedObject().Update(); bool flag = this.m_lastPosition != this.m_TrackPositionProperty.get_vector3Value() || this.m_lastRotation != this.m_TrackRotationProperty.get_quaternionValue(); this.m_lastPosition = this.m_TrackPositionProperty.get_vector3Value(); this.m_lastRotation = this.m_TrackRotationProperty.get_quaternionValue(); EditorGUI.BeginChangeCheck(); this.DrawAvatarProperties(); if (EditorGUI.EndChangeCheck()) { this.RebuildGraph(); } if (base.get_targets().Length == 1) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(this.m_ApplyOffsetsProperty, AnimationTrackInspector.Styles.TrackOffsetTitle, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { this.RebuildGraph(); } Animator animator = this.GetAnimator(); bool flag2 = animator == null || !TimelineAnimationUtilities.ValidateOffsetAvailabitity(base.timelineWindow.state.currentDirector, animator) || !this.m_ApplyOffsetsProperty.get_boolValue(); using (new EditorGUI.DisabledScope(flag2)) { EditorGUI.set_indentLevel(EditorGUI.get_indentLevel() + 1); float num = 0f; float num2 = 0f; GUI.get_skin().get_button().CalcMinMaxWidth(AnimationTrackInspector.Styles.PositionIcon, ref num, ref num2); AnimationTrackInspector.ShowMotionOffsetEditModeToolbar(ref this.m_OffsetEditMode); SceneView.RepaintAll(); EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); EditorGUILayout.PropertyField(this.m_TrackPositionProperty, new GUILayoutOption[0]); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); AnimationPlayableAssetInspector.ShowRotationField(this.m_TrackRotationProperty); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUI.set_indentLevel(EditorGUI.get_indentLevel() - 1); flag |= EditorGUI.EndChangeCheck(); if (flag) { AnimationTrack animationTrack = (AnimationTrack)base.get_target(); animationTrack.UpdateClipOffsets(); this.Evaluate(); } } } else { GUILayout.Label(AnimationTrackInspector.Styles.TrackOffsetCannotBeEditedWarning, EditorStyles.get_helpBox(), new GUILayoutOption[0]); } AnimationTrackInspector.MatchTargetsField(this.m_MatchFieldsProperty, null, null, false); base.get_serializedObject().ApplyModifiedProperties(); }
public static void UpdateTrackOffset(AnimationTrack track, Transform transform, TimelineAnimationUtilities.RigidTransform offsets) { if (transform != null && transform.get_parent() != null) { offsets.position = transform.get_parent().InverseTransformPoint(offsets.position); offsets.rotation = Quaternion.Inverse(transform.get_parent().get_rotation()) * offsets.rotation; MathUtils.QuaternionNormalize(ref offsets.rotation); } track.position = offsets.position; track.rotation = offsets.rotation; track.UpdateClipOffsets(); }
public static void UpdateTrackOffset(AnimationTrack track, Transform transform, RigidTransform offsets) { if (transform != null && transform.parent != null) { offsets.position = transform.parent.InverseTransformPoint(offsets.position); offsets.rotation = Quaternion.Inverse(transform.parent.rotation) * offsets.rotation; MathUtils.QuaternionNormalize(ref offsets.rotation); } track.position = offsets.position; track.eulerAngles = AnimationUtility.GetClosestEuler(offsets.rotation, track.eulerAngles, RotationOrder.OrderZXY); track.UpdateClipOffsets(); }