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(); } }
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); } } }
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); } } }