void StateDetailOnEditor() { if (states.index == -1 || states.index >= _instance.States.Length) { return; } AnimationPlayer.AnimationState state = _instance.States[states.index]; if (state == null) { return; } EditorGUILayout.BeginVertical("Box"); EditorGUILayout.LabelField(state.name, EditorStyles.boldLabel); EditorGUI.indentLevel++; bool isDirty = false; var speed = EditorGUILayout.DelayedFloatField("Speed", state.speed); if (speed != state.speed) { state.speed = speed; isDirty = true; } var applyFootIK = EditorGUILayout.Toggle("Apply Foot IK", state.applyFootIK); if (applyFootIK != state.applyFootIK) { state.applyFootIK = applyFootIK; isDirty = true; } var applyPlayableIK = EditorGUILayout.Toggle("Apply Playable IK", state.applyPlayableIK); if (applyPlayableIK != state.applyPlayableIK) { state.applyPlayableIK = applyPlayableIK; isDirty = true; } if (isDirty) { EditorUtility.SetDirty(_instance); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); }
void StateOnPlay() { EditorGUILayout.LabelField("Play Mode", EditorStyles.boldLabel); // Controller EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Play")) { _instance.Play(); } if (GUILayout.Button("Stop")) { _instance.Stop(); } EditorGUILayout.EndHorizontal(); // State Information Color weightZeroColor = new Color(0.18f, 0.3f, 0.15f, 0.7f); Color weightOneColor = new Color(0.68f, 0.825f, 0.65f, 0.3f); EditorGUILayout.BeginVertical("Box"); EditorGUI.indentLevel++; playDetailFoldOpened = EditorGUILayout.Foldout(playDetailFoldOpened, playDetailFoldOpened ? "Detail" : "Simple"); for (int i = 0; i < _instance.States.Length; i++) { AnimationPlayer.AnimationState state = _instance.States[i]; if (state == null) { continue; } if (i == _instance.CurStateIndex) { EditorGUILayout.LabelField(state.name, EditorStyles.boldLabel); } else { EditorGUILayout.LabelField(state.name); } EditorGUILayout.ObjectField(state.clip, typeof(AnimationClip), true); Rect controlRect = GUILayoutUtility.GetLastRect(); Rect timeRect = controlRect; timeRect.x += 16; timeRect.y += 1; timeRect.width -= 35; timeRect.height -= 2; timeRect.width *= (state.normalizedTime - (int)state.normalizedTime); Color weightColor = Color.Lerp(weightZeroColor, weightOneColor, state.weight); EditorGUI.DrawRect(timeRect, weightColor); if (playDetailFoldOpened) { EditorGUILayout.DelayedFloatField("Time", state.time); EditorGUILayout.DelayedFloatField("NormalizedTime", state.normalizedTime); EditorGUILayout.DelayedFloatField("Weight", state.weight); EditorGUILayout.DelayedFloatField("FadeSpeed", state.fadeSpeed); } } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); }