Пример #1
0
        public static void ShowParametersGUI(List <ActionParameter> parameters)
        {
            int numParameters = parameters.Count;

            numParameters = EditorGUILayout.IntField("Number of parameters:", numParameters);
            if (numParameters < 0)
            {
                numParameters = 0;
            }

            if (numParameters < parameters.Count)
            {
                parameters.RemoveRange(numParameters, parameters.Count - numParameters);
            }
            else if (numParameters > parameters.Count)
            {
                if (numParameters > parameters.Capacity)
                {
                    parameters.Capacity = numParameters;
                }
                for (int i = parameters.Count; i < numParameters; i++)
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                    parameters.Add(newParameter);
                }
            }

            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.Width(10f));
                _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);
                if (GUILayout.Button("-"))
                {
                    parameters.Remove(_parameter);
                    break;
                }
                EditorGUILayout.EndHorizontal();
            }
        }
Пример #2
0
        public static void ShowParametersGUI(ActionList actionList, ActionListAsset actionListAsset, List <ActionParameter> parameters)
        {
            foreach (ActionParameter _parameter in parameters)
            {
                EditorGUILayout.BeginHorizontal();

                if (Application.isPlaying)
                {
                    EditorGUILayout.LabelField(_parameter.ID.ToString() + ": " + _parameter.parameterType.ToString() + " '" + _parameter.label + "'");
                    EditorGUILayout.LabelField("Current value: '" + _parameter.GetLabel() + "'");
                }
                else
                {
                    EditorGUILayout.LabelField(_parameter.ID.ToString(), GUILayout.MaxWidth(10f));
                    _parameter.label         = EditorGUILayout.TextField(_parameter.label);
                    _parameter.parameterType = (ParameterType)EditorGUILayout.EnumPopup(_parameter.parameterType);

                    if (GUILayout.Button("", CustomStyles.IconCog))
                    {
                        ParameterSideMenu(actionList, actionListAsset, parameters.Count, parameters.IndexOf(_parameter));
                    }
                }

                EditorGUILayout.EndHorizontal();
            }

            if (!Application.isPlaying)
            {
                if (parameters.Count > 0)
                {
                    EditorGUILayout.Space();
                }

                if (GUILayout.Button("Create new parameter", EditorStyles.miniButton))
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(parameters));
                    parameters.Add(newParameter);
                }
            }
        }
Пример #3
0
        public static void ShowLocalParametersGUI(List <ActionParameter> localParameters, List <ActionParameter> assetParameters, bool isAssetFile)
        {
            int numParameters = assetParameters.Count;

            if (numParameters < localParameters.Count)
            {
                localParameters.RemoveRange(numParameters, localParameters.Count - numParameters);
            }
            else if (numParameters > localParameters.Count)
            {
                if (numParameters > localParameters.Capacity)
                {
                    localParameters.Capacity = numParameters;
                }
                for (int i = localParameters.Count; i < numParameters; i++)
                {
                    ActionParameter newParameter = new ActionParameter(ActionListEditor.GetParameterIDArray(localParameters));
                    localParameters.Add(newParameter);
                }
            }

            for (int i = 0; i < numParameters; i++)
            {
                string label = assetParameters[i].label;
                localParameters[i].parameterType = assetParameters[i].parameterType;

                if (assetParameters[i].parameterType == ParameterType.String)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(label + ":", GUILayout.Width(145f));
                    EditorStyles.textField.wordWrap = true;
                    localParameters[i].stringValue  = EditorGUILayout.TextArea(localParameters[i].stringValue, GUILayout.MaxWidth(400f));
                    EditorGUILayout.EndHorizontal();
                }
                else if (assetParameters[i].parameterType == ParameterType.Float)
                {
                    localParameters[i].floatValue = EditorGUILayout.FloatField(label + ":", localParameters[i].floatValue);
                }
                else if (assetParameters[i].parameterType == ParameterType.Integer)
                {
                    localParameters[i].intValue = EditorGUILayout.IntField(label + ":", localParameters[i].intValue);
                }
                else if (assetParameters[i].parameterType == ParameterType.Boolean)
                {
                    BoolValue boolValue = BoolValue.False;
                    if (localParameters[i].intValue == 1)
                    {
                        boolValue = BoolValue.True;
                    }

                    boolValue = (BoolValue)EditorGUILayout.EnumPopup(label + ":", boolValue);

                    if (boolValue == BoolValue.True)
                    {
                        localParameters[i].intValue = 1;
                    }
                    else
                    {
                        localParameters[i].intValue = 0;
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.GlobalVariable)
                {
                    if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager)
                    {
                        VariablesManager variablesManager = AdvGame.GetReferences().variablesManager;
                        localParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", variablesManager.vars, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning);
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.InventoryItem)
                {
                    if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager)
                    {
                        InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager;
                        localParameters[i].intValue = ActionRunActionList.ShowInvItemSelectorGUI(label + ":", inventoryManager.items, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning);
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.LocalVariable)
                {
                    if (KickStarter.localVariables)
                    {
                        localParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", KickStarter.localVariables.localVars, localParameters[i].intValue);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning);
                    }
                }
                if (assetParameters[i].parameterType == ParameterType.GameObject)
                {
                    if (isAssetFile)
                    {
                        // ID
                        localParameters[i].intValue   = EditorGUILayout.IntField(label + " (ID):", localParameters[i].intValue);
                        localParameters[i].gameObject = null;
                    }
                    else
                    {
                        // Gameobject
                        localParameters[i].gameObject = (GameObject)EditorGUILayout.ObjectField(label + ":", localParameters[i].gameObject, typeof(GameObject), true);
                        localParameters[i].intValue   = 0;
                        if (localParameters[i].gameObject != null && localParameters[i].gameObject.GetComponent <ConstantID>() == null)
                        {
                            localParameters[i].gameObject.AddComponent <ConstantID>();
                        }
                    }
                }
                else if (assetParameters[i].parameterType == ParameterType.UnityObject)
                {
                    localParameters[i].objectValue = (Object)EditorGUILayout.ObjectField(label + ":", localParameters[i].objectValue, typeof(Object), true);
                }
            }
        }