private ParameterControllerView.Element CreateElement(UnityEngine.AnimatorControllerParameter parameter) { UnityEngine.AnimatorControllerParameterType type = parameter.type; UnityEngine.AnimatorControllerParameterType animatorControllerParameterType = type; switch (animatorControllerParameterType) { case UnityEngine.AnimatorControllerParameterType.Float: return(new ParameterControllerView.FloatElement(parameter, this)); case (UnityEngine.AnimatorControllerParameterType) 2: IL_21: if (animatorControllerParameterType != UnityEngine.AnimatorControllerParameterType.Trigger) { return(null); } return(new ParameterControllerView.TriggerElement(parameter, this)); case UnityEngine.AnimatorControllerParameterType.Int: return(new ParameterControllerView.IntElement(parameter, this)); case UnityEngine.AnimatorControllerParameterType.Bool: return(new ParameterControllerView.BoolElement(parameter, this)); } goto IL_21; }
public void AddParameter(string name, UnityEngine.AnimatorControllerParameterType type) { this.AddParameter(new UnityEngine.AnimatorControllerParameter { name = this.MakeUniqueParameterName(name), type = type }); }
static string ParameterTypeToAccessorName(ParameterType type) { switch (type) { case ParameterType.Int: return("Integer"); default: return(type.ToString()); } }
static string ParameterTypeToType(ParameterType type) { switch (type) { case ParameterType.Int: return("int"); case ParameterType.Float: return("float"); case ParameterType.Bool: return("bool"); default: throw Never($"Unexpected parameter type {type}"); } }
private void AddParameterMenu(object value) { Undo.RegisterCompleteObjectUndo(this.m_Host.animatorController, "Parameter Added"); UnityEngine.AnimatorControllerParameterType animatorControllerParameterType = (UnityEngine.AnimatorControllerParameterType)((int)value); string name = "New " + animatorControllerParameterType.ToString(); this.m_Host.animatorController.AddParameter(name, animatorControllerParameterType); this.RebuildList(); this.m_ParameterList.index = this.m_Tree.Length - 1; if (this.renameOverlay.IsRenaming()) { this.RenameEnd(); } this.renameOverlay.BeginRename(this.m_Host.animatorController.parameters[this.m_ParameterList.index].name, this.m_ParameterList.index, 0.1f); }
static void AnimatorControllerParameter_type(JSVCall vc) { if (vc.bGet) { UnityEngine.AnimatorControllerParameter _this = (UnityEngine.AnimatorControllerParameter)vc.csObj; var result = _this.type; JSApi.setEnum((int)JSApi.SetType.Rval, (int)result); } else { UnityEngine.AnimatorControllerParameterType arg0 = (UnityEngine.AnimatorControllerParameterType)JSApi.getEnum((int)JSApi.GetType.Arg); UnityEngine.AnimatorControllerParameter _this = (UnityEngine.AnimatorControllerParameter)vc.csObj; _this.type = arg0; } }
private void DrawConditionsElement(Rect rect, int index, bool selected, bool focused) { SerializedProperty arrayElementAtIndex = this.m_Conditions.GetArrayElementAtIndex(index); AnimatorConditionMode intValue = (AnimatorConditionMode)arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue; int num = 3; Rect rect2 = new Rect(rect.x, rect.y + 2f, rect.width, rect.height - 5f); Rect position = rect2; position.xMax -= (rect2.width / 2f) + num; Rect rect4 = rect2; rect4.xMin += (rect2.width / 2f) + num; Rect rect5 = rect4; rect5.xMax -= (rect4.width / 2f) + num; Rect rect6 = rect4; rect6.xMin += (rect4.width / 2f) + num; string stringValue = arrayElementAtIndex.FindPropertyRelative("m_ConditionEvent").stringValue; int num2 = (this.m_Controller == null) ? -1 : this.m_Controller.IndexOfParameter(stringValue); bool flag = false; List <string> list = new List <string>(); UnityEngine.AnimatorControllerParameter[] parameters = null; if (this.m_Controller != null) { parameters = this.m_Controller.parameters; for (int i = 0; i < parameters.Length; i++) { list.Add(parameters[i].name); } } string name = EditorGUI.DelayedTextFieldDropDown(position, stringValue, list.ToArray()); if (stringValue != name) { num2 = this.m_Controller.IndexOfParameter(name); arrayElementAtIndex.FindPropertyRelative("m_ConditionEvent").stringValue = name; intValue = AnimatorConditionMode.Greater; arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = (int)intValue; flag = true; } UnityEngine.AnimatorControllerParameterType type = (num2 == -1) ? ((UnityEngine.AnimatorControllerParameterType)(-1)) : parameters[num2].type; if ((num2 != -1) && ((type == UnityEngine.AnimatorControllerParameterType.Float) || (type == UnityEngine.AnimatorControllerParameterType.Int))) { List <AnimatorConditionMode> list2 = (type != UnityEngine.AnimatorControllerParameterType.Float) ? m_intModes : m_floatModes; string[] displayedOptions = new string[list2.Count]; for (int j = 0; j < displayedOptions.Length; j++) { displayedOptions[j] = list2[j].ToString(); } int selectedIndex = -1; for (int k = 0; k < displayedOptions.Length; k++) { if (intValue.ToString() == displayedOptions[k]) { selectedIndex = k; } } if (selectedIndex == -1) { Vector2 vector = GUI.skin.label.CalcSize(s_Styles.errorIcon); Rect rect7 = rect5; rect7.xMax = rect7.xMin + vector.x; rect5.xMin += vector.x; GUI.Label(rect7, s_Styles.errorIcon); } EditorGUI.BeginChangeCheck(); selectedIndex = EditorGUI.Popup(rect5, selectedIndex, displayedOptions); if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = list2[selectedIndex]; } EditorGUI.BeginChangeCheck(); float floatValue = arrayElementAtIndex.FindPropertyRelative("m_EventTreshold").floatValue; if (type == UnityEngine.AnimatorControllerParameterType.Float) { floatValue = EditorGUI.FloatField(rect6, floatValue); } else { floatValue = EditorGUI.IntField(rect6, Mathf.FloorToInt(floatValue)); } if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_EventTreshold").floatValue = floatValue; } } else if ((num2 != -1) && (type == UnityEngine.AnimatorControllerParameterType.Bool)) { string[] strArray2 = new string[] { "true", "false" }; int num8 = (intValue != AnimatorConditionMode.IfNot) ? 0 : 1; EditorGUI.BeginChangeCheck(); num8 = EditorGUI.Popup(rect4, num8, strArray2); if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = (num8 != 0) ? 2 : 1; } } else if (type == UnityEngine.AnimatorControllerParameterType.Trigger) { if (flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = 1; } } else { EditorGUI.LabelField(rect4, "Parameter does not exist in Controller"); } }
private void DrawConditionsElement(Rect rect, int index, bool selected, bool focused) { SerializedProperty arrayElementAtIndex = this.m_Conditions.GetArrayElementAtIndex(index); AnimatorConditionMode animatorConditionMode = (AnimatorConditionMode)arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue; int num = 3; Rect rect2 = new Rect(rect.x, rect.y + 2f, rect.width, rect.height - 5f); Rect position = rect2; position.xMax -= rect2.width / 2f + (float)num; Rect rect3 = rect2; rect3.xMin += rect2.width / 2f + (float)num; Rect rect4 = rect3; rect4.xMax -= rect3.width / 2f + (float)num; Rect position2 = rect3; position2.xMin += rect3.width / 2f + (float)num; string stringValue = arrayElementAtIndex.FindPropertyRelative("m_ConditionEvent").stringValue; int num2 = (!this.m_Controller) ? -1 : this.m_Controller.IndexOfParameter(stringValue); bool flag = false; List <string> list = new List <string>(); UnityEngine.AnimatorControllerParameter[] array = null; if (this.m_Controller) { array = this.m_Controller.parameters; for (int i = 0; i < array.Length; i++) { list.Add(array[i].name); } } string text = EditorGUI.DelayedTextFieldDropDown(position, stringValue, list.ToArray()); if (stringValue != text) { num2 = this.m_Controller.IndexOfParameter(text); arrayElementAtIndex.FindPropertyRelative("m_ConditionEvent").stringValue = text; animatorConditionMode = AnimatorConditionMode.Greater; arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = (int)animatorConditionMode; flag = true; } UnityEngine.AnimatorControllerParameterType animatorControllerParameterType = (num2 == -1) ? ((UnityEngine.AnimatorControllerParameterType)(-1)) : array[num2].type; if (num2 != -1 && (animatorControllerParameterType == UnityEngine.AnimatorControllerParameterType.Float || animatorControllerParameterType == UnityEngine.AnimatorControllerParameterType.Int)) { List <AnimatorConditionMode> list2 = (animatorControllerParameterType != UnityEngine.AnimatorControllerParameterType.Float) ? AnimatorTransitionInspectorBase.m_intModes : AnimatorTransitionInspectorBase.m_floatModes; string[] array2 = new string[list2.Count]; for (int j = 0; j < array2.Length; j++) { array2[j] = list2[j].ToString(); } int num3 = -1; for (int k = 0; k < array2.Length; k++) { if (animatorConditionMode.ToString() == array2[k]) { num3 = k; } } if (num3 == -1) { Vector2 vector = GUI.skin.label.CalcSize(AnimatorTransitionInspectorBase.s_Styles.errorIcon); Rect position3 = rect4; position3.xMax = position3.xMin + vector.x; rect4.xMin += vector.x; GUI.Label(position3, AnimatorTransitionInspectorBase.s_Styles.errorIcon); } EditorGUI.BeginChangeCheck(); num3 = EditorGUI.Popup(rect4, num3, array2); if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = (int)list2[num3]; } EditorGUI.BeginChangeCheck(); float num4 = arrayElementAtIndex.FindPropertyRelative("m_EventTreshold").floatValue; if (animatorControllerParameterType == UnityEngine.AnimatorControllerParameterType.Float) { num4 = EditorGUI.FloatField(position2, num4); } else { num4 = (float)EditorGUI.IntField(position2, Mathf.FloorToInt(num4)); } if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_EventTreshold").floatValue = num4; } } else if (num2 != -1 && animatorControllerParameterType == UnityEngine.AnimatorControllerParameterType.Bool) { string[] displayedOptions = new string[] { "true", "false" }; int num5 = (animatorConditionMode != AnimatorConditionMode.IfNot) ? 0 : 1; EditorGUI.BeginChangeCheck(); num5 = EditorGUI.Popup(rect3, num5, displayedOptions); if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = ((num5 != 0) ? 2 : 1); } } else if (animatorControllerParameterType == UnityEngine.AnimatorControllerParameterType.Trigger) { if (flag) { arrayElementAtIndex.FindPropertyRelative("m_ConditionMode").intValue = 1; } } else { EditorGUI.LabelField(rect3, "Parameter does not exist in Controller"); } }
public void Initialize(SerializedProperty property) { _listProp = property.FindPropertyRelative(nameof(ConditionEvaluator.Items)); _conditionEvaluator = fieldInfo.GetValue(property.serializedObject.targetObject) as ConditionEvaluator; _reorderableList = new ReorderableList(property.serializedObject, _listProp, true, true, true, true); if (_conditionEvaluator.Items == null) { _conditionEvaluator.Items = new List <AnimationCondition>(); } //_parameters = _conditionEvaluator.Parameters; _listHeight = _reorderableList.GetHeight(); _reorderableList.drawElementCallback = (rect, index, isActive, isFocused) => { EditorGUI.PropertyField(rect, _listProp.GetArrayElementAtIndex(index)); }; if (IntModes == null) { IntModes = new List <ConditionMode> { ConditionMode.Greater, ConditionMode.Less, ConditionMode.Equals, ConditionMode.NotEqual }; } if (FloatModes == null) { FloatModes = new List <ConditionMode> { ConditionMode.Greater, ConditionMode.Less }; } _reorderableList.drawHeaderCallback = rect => { GUI.Label(rect, "Conditions"); }; _reorderableList.onAddCallback = list => { var _parametersCollection = _conditionEvaluator.Parameters; string parameter = ""; ConditionMode mode = ConditionMode.Greater; if (_parametersCollection != null) { AnimatorControllerParameter[] parameters = _parametersCollection.Items; if (parameters.Length > 0) { parameter = parameters[0].name; mode = parameters[0].type == AnimatorControllerParameterType.Float || parameters[0].type == AnimatorControllerParameterType.Int ? ConditionMode.Greater : ConditionMode.If; } } _conditionEvaluator.Items.Add(new AnimationCondition { ConditionMode = mode, Parameter = parameter, Threshold = 0f }); }; _reorderableList.drawElementCallback = (rect, index, active, focused) => { var _parametersCollection = _conditionEvaluator.Parameters; SerializedProperty arrayElementAtIndex = _listProp.GetArrayElementAtIndex(index); ConditionMode animatorConditionMode = (ConditionMode)arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.ConditionMode)).intValue; int num1 = 3; Rect rect1 = new Rect(rect.x, rect.y + 2f, rect.width, rect.height - 5f); Rect position1 = rect1; position1.xMax -= rect1.width / 2f + (float)num1; Rect position2 = rect1; position2.xMin += rect1.width / 2f + (float)num1; Rect position3 = position2; position3.xMax -= position2.width / 2f + (float)num1; Rect position4 = position2; position4.xMin += position2.width / 2f + (float)num1; string stringValue = arrayElementAtIndex.FindPropertyRelative("Parameter").stringValue; int index1 = _parametersCollection?.IndexOfParameter(stringValue) ?? -1; bool flag = false; List <string> stringList = new List <string>(); AnimatorControllerParameter[] controllerParameterArray = null; if (_parametersCollection != null) { controllerParameterArray = _parametersCollection.Items; for (int index2 = 0; index2 < controllerParameterArray.Length; ++index2) { stringList.Add(controllerParameterArray[index2].name); } } string name = DelayedTextFieldDropDown(position1, stringValue, stringList.ToArray()); if (stringValue != name) { index1 = _parametersCollection.IndexOfParameter(name); arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.Parameter)).stringValue = name; animatorConditionMode = ConditionMode.Greater; arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.ConditionMode)).intValue = (int)animatorConditionMode; flag = true; } AnimatorControllerParameterType controllerParameterType = index1 == -1 ? (AnimatorControllerParameterType)(-1) : controllerParameterArray[index1].type; if (index1 != -1 && (controllerParameterType == AnimatorControllerParameterType.Float || controllerParameterType == AnimatorControllerParameterType.Int)) { List <ConditionMode> animatorConditionModeList = controllerParameterType != AnimatorControllerParameterType.Float ? IntModes : FloatModes; string[] displayedOptions = new string[animatorConditionModeList.Count]; for (int index2 = 0; index2 < displayedOptions.Length; ++index2) { displayedOptions[index2] = animatorConditionModeList[index2].ToString(); } int selectedIndex = -1; for (int index2 = 0; index2 < displayedOptions.Length; ++index2) { if (animatorConditionMode.ToString() == displayedOptions[index2]) { selectedIndex = index2; } } if (selectedIndex == -1) { Vector2 vector2 = GUI.skin.label.CalcSize(Styles.ErrorIcon); Rect position5 = position3; position5.xMax = position5.xMin + vector2.x; position3.xMin += vector2.x; GUI.Label(position5, Styles.ErrorIcon); } EditorGUI.BeginChangeCheck(); int index3 = EditorGUI.Popup(position3, selectedIndex, displayedOptions); if (EditorGUI.EndChangeCheck() || flag) { arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.ConditionMode)).intValue = (int)animatorConditionModeList[index3]; } EditorGUI.BeginChangeCheck(); float floatValue = arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.Threshold)).floatValue; float num2 = controllerParameterType != AnimatorControllerParameterType.Float ? (float)EditorGUI.IntField(position4, Mathf.FloorToInt(floatValue)) : EditorGUI.FloatField(position4, floatValue); if (!EditorGUI.EndChangeCheck() && !flag) { return; } arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.Threshold)).floatValue = num2; } else if (index1 != -1 && controllerParameterType == AnimatorControllerParameterType.Bool) { string[] displayedOptions = new string[2] { "true", "false" }; int selectedIndex = animatorConditionMode != ConditionMode.IfNot ? 0 : 1; EditorGUI.BeginChangeCheck(); int num2 = EditorGUI.Popup(position2, selectedIndex, displayedOptions); if (!EditorGUI.EndChangeCheck() && !flag) { return; } arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.ConditionMode)).intValue = num2 != 0 ? 2 : 1; } else if (controllerParameterType == AnimatorControllerParameterType.Trigger) { if (!flag) { return; } arrayElementAtIndex.FindPropertyRelative(nameof(AnimationCondition.ConditionMode)).intValue = 1; } else { EditorGUI.LabelField(position2, "Parameter does not exist in Controller"); } }; _initialized = true; }
public static int TypeCost(AnimatorControllerParameterType type) => type == AnimatorControllerParameterType.Int || type != AnimatorControllerParameterType.Bool ? 8 : 1;