private static void animator_Cycled(AnimatorEventArgs e) { // pass the event up... if (SpriteAnimatorCycled != null) { SpriteAnimatorCycled(e); } }
private void ResetAll() { _selectedData = null; _selectedEventArg = null; previewedMotion = null; }
private void DrawEventData(EventData data) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Display Name: ", GUILayout.MaxWidth(100)); _selectedName = EditorGUILayout.TextField(_selectedName); if (GUILayout.Button("Rename", EditorStyles.toolbarButton, GUILayout.Width(60))) { data.Name = _selectedName; } } using (new EditorGUILayout.HorizontalScope()) { using (var check = new EditorGUI.ChangeCheckScope()) { EditorGUILayout.LabelField("Target Controller: ", GUILayout.MaxWidth(100)); data.TargetController = EditorGUILayout.ObjectField(data.TargetController, typeof(AnimatorController), false) as AnimatorController; if (check.changed) { } } } if (data.TargetController != null) { // Draw Layers EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("1. Select Layer", EditorStyles.centeredGreyMiniLabel); var animatorController = (AnimatorController)data.TargetController; for (var i = 0; i < animatorController.layers.Length; i++) { var layer = animatorController.layers[i]; if (i == _selectedLayer) { GUI.backgroundColor = Color.green; } if (GUILayout.Button(i + " - " + layer.name)) { _selectedLayer = i; } GUI.backgroundColor = Color.white; } EditorGUILayout.EndVertical(); // Draw States if (_selectedLayer != -1) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("2. Select State", EditorStyles.centeredGreyMiniLabel); var stateMachine = animatorController.layers[_selectedLayer].stateMachine; for (var i = 0; i < stateMachine.states.Length; i++) { var state = stateMachine.states[i]; if (state.state.nameHash == _selectedState) { GUI.backgroundColor = Color.green; } if (GUILayout.Button(state.state.name)) { SetupPreview(state.state.motion); previewedMotion = state.state.motion; _selectedState = state.state.nameHash; // Debug.Log(_selectedState); _selectedEventArg = null; } GUI.backgroundColor = Color.white; } EditorGUILayout.EndVertical(); } // Draw Events if (_selectedState != -1) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); var index = new StateIndex(_selectedLayer, _selectedState); if (!data.Configs.ContainsKey(index)) { data.Configs.Add(index, new AnimatorEvents()); } using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Normalized", GUILayout.Width(100)); using (var check = new EditorGUI.ChangeCheckScope()) { _normalizedSetting = EditorGUILayout.Slider(_normalizedSetting, 0, 1); if (check.changed) { if (_avatarPreview != null) { _avatarPreview.Animator.Play(0, 0, _normalizedSetting); _avatarPreview.timeControl.normalizedTime = _normalizedSetting; } if (_selectedEventArg != null) { _selectedEventArg.NormalizedTime = _normalizedSetting; data.Configs[index] = new AnimatorEvents(data.Configs[index].Value.OrderBy(x => x.NormalizedTime)); } } } if (GUILayout.Button("Add Event", EditorStyles.toolbarButton)) { var countNum = data.Configs[index].Value.Count; var newEventArg = new AnimatorEventArgs { Name = "New Event " + countNum, NormalizedTime = _normalizedSetting }; data.Configs[index].Value.Add(newEventArg); data.Configs[index] = new AnimatorEvents(data.Configs[index].Value.OrderBy(x => x.NormalizedTime)); _selectedEventArg = newEventArg; EditorUtility.SetDirty(_dataSet); } } EditorGUILayout.LabelField("3. Edit Events", EditorStyles.centeredGreyMiniLabel); for (var i = 0; i < data.Configs[index].Value.Count; i++) { var evt = data.Configs[index].Value[i]; var normalizedTime = evt.NormalizedTime.ToString("F3"); using (new EditorGUILayout.HorizontalScope()) { if (_selectedEventArg == evt) { GUI.backgroundColor = Color.green; } if (GUILayout.Button(normalizedTime + " - " + evt.Name)) { if (_selectedEventArg == evt) { _selectedEventArg = null; continue; } _selectedEventArg = evt; _selectedEventName = evt.Name; _normalizedSetting = evt.NormalizedTime; if (_avatarPreview != null) { _avatarPreview.Animator.Play(0, 0, evt.NormalizedTime); _avatarPreview.timeControl.normalizedTime = evt.NormalizedTime; } } GUI.backgroundColor = Color.white; if (GUILayout.Button("DEL", GUILayout.Width(45))) { _delayedActions.Add(() => data.Configs[index].Value.Remove(evt)); if (_selectedEventArg == evt) { _selectedEventArg = null; } } } } if (_selectedEventArg != null) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Display Name: ", GUILayout.MaxWidth(100)); _selectedEventName = EditorGUILayout.TextField(_selectedEventName); if (GUILayout.Button("Rename", EditorStyles.toolbarButton, GUILayout.Width(60))) { _selectedEventArg.Name = _selectedEventName; } } _selectedEventArg.Type = (AnimatorEventType)EditorGUILayout.EnumPopup("Event Type", _selectedEventArg.Type); switch (_selectedEventArg.Type) { case AnimatorEventType.Pure: break; case AnimatorEventType.Float: _selectedEventArg.FloatParm = EditorGUILayout.FloatField("Float Parameter", _selectedEventArg.FloatParm); break; case AnimatorEventType.Int: _selectedEventArg.IntParm = EditorGUILayout.IntField("Int Parameter", _selectedEventArg.IntParm); break; case AnimatorEventType.String: _selectedEventArg.StringParm = EditorGUILayout.TextField("String Parameter", _selectedEventArg.StringParm); break; case AnimatorEventType.Object: _selectedEventArg.ObjectParm = EditorGUILayout.ObjectField("Object Parameter", _selectedEventArg.ObjectParm, typeof(Object), false); break; default: throw new ArgumentOutOfRangeException(); } EditorGUILayout.EndVertical(); } EditorGUILayout.EndVertical(); } } EditorGUILayout.EndVertical(); }