Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 public void AddParameter(string name, UnityEngine.AnimatorControllerParameterType type)
 {
     this.AddParameter(new UnityEngine.AnimatorControllerParameter
     {
         name = this.MakeUniqueParameterName(name),
         type = type
     });
 }
Ejemplo n.º 3
0
        static string ParameterTypeToAccessorName(ParameterType type)
        {
            switch (type)
            {
            case ParameterType.Int: return("Integer");

            default: return(type.ToString());
            }
        }
Ejemplo n.º 4
0
        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}");
            }
        }
Ejemplo n.º 5
0
        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;
     }
 }
Ejemplo n.º 7
0
        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;
    }
Ejemplo n.º 10
0
 public static int TypeCost(AnimatorControllerParameterType type) => type == AnimatorControllerParameterType.Int || type != AnimatorControllerParameterType.Bool ? 8 : 1;