public void ShowGUI() { isPlayerLine = CustomGUILayout.Toggle("Player line?", isPlayerLine, "", "If True, the line is spoken by the active Player"); if (isPlayerLine) { if (KickStarter.settingsManager != null && KickStarter.settingsManager.playerSwitching == PlayerSwitching.Allow) { playerID = ChoosePlayerGUI(playerID); } } else { // For some reason, dynamically generating an ID number for a Char component destroys the component (?!), so we need to store a GameObject instead and convert to Char in the GUI Char speakerPrefab = (speakerObject != null) ? speakerObject.GetComponent <Char>() : null; speakerPrefab = (Char)CustomGUILayout.ObjectField <Char> ("Speaker prefab:", speakerPrefab, false, "", "The prefab of the character who is speaking the lines on this track"); speakerObject = (speakerPrefab != null) ? speakerPrefab.gameObject : null; if (speakerObject != null) { if (speakerObject.GetComponent <ConstantID>() == null || speakerObject.GetComponent <ConstantID>().constantID == 0) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (speakerObject, true); } if (speakerObject.GetComponent <ConstantID>()) { speakerConstantID = speakerObject.GetComponent <ConstantID>().constantID; } if (speakerObject.GetComponent <ConstantID>() == null || speakerConstantID == 0) { EditorGUILayout.HelpBox("A Constant ID number must be assigned to " + speakerObject + ". Attach a ConstantID component and check 'Retain in prefab?'", MessageType.Warning); } else { EditorGUILayout.BeginVertical("Button"); EditorGUILayout.LabelField("Recorded ConstantID: " + speakerConstantID.ToString(), EditorStyles.miniLabel); EditorGUILayout.EndVertical(); } } } playbackMode = (SpeechTrackPlaybackMode)EditorGUILayout.EnumPopup("Playback mode:", playbackMode); if (playbackMode == SpeechTrackPlaybackMode.Natural) { EditorGUILayout.HelpBox("Speech lines will last as long as the settings in the Speech Manager dictate.", MessageType.Info); } else if (playbackMode == SpeechTrackPlaybackMode.ClipDuration) { EditorGUILayout.HelpBox("Speech lines will last for the duration of their associated Timeline clip.", MessageType.Info); } }
private int FieldToID <T> (T field, int _constantID) where T : Component { if (field == null) { return(_constantID); } if (field.GetComponent <ConstantID> ()) { if (!field.gameObject.activeInHierarchy && field.GetComponent <ConstantID> ().constantID == 0) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (field.gameObject, true); } _constantID = field.GetComponent <ConstantID> ().constantID; } else { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (field.gameObject, true); AssetDatabase.SaveAssets(); _constantID = field.GetComponent <ConstantID> ().constantID; } return(_constantID); }
private void SetParametersGUI(List <ActionParameter> externalParameters, List <ActionParameter> ownParameters) { setParameters = EditorGUILayout.Toggle("Set parameters?", setParameters); if (!setParameters) { return; } SyncLists(externalParameters, localParameters); EditorGUILayout.BeginVertical("Button"); for (int i = 0; i < externalParameters.Count; i++) { string label = externalParameters[i].label; int linkedID = parameterIDs[i]; localParameters[i].parameterType = externalParameters[i].parameterType; if (externalParameters[i].parameterType == ParameterType.GameObject) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GameObject); if (linkedID < 0) { if (isAssetFile) { localParameters[i].gameObject = (GameObject)EditorGUILayout.ObjectField(label + ":", localParameters[i].gameObject, typeof(GameObject), true); if (localParameters[i].gameObject != null) { if (!UnityVersionHandler.IsPrefabFile(localParameters[i].gameObject)) { localParameters[i].intValue = FieldToID(localParameters[i].gameObject, localParameters[i].intValue); localParameters[i].gameObject = IDToField(localParameters[i].gameObject, localParameters[i].intValue, true); } else { // A prefab, ask if we want to affect the prefab or the scene-based instance? localParameters[i].gameObjectParameterReferences = (GameObjectParameterReferences)EditorGUILayout.EnumPopup("GameObject parameter:", localParameters[i].gameObjectParameterReferences); } } else { localParameters[i].intValue = EditorGUILayout.IntField(label + " (ID #):", localParameters[i].intValue); } } 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) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (localParameters[i].gameObject); } } } } else if (externalParameters[i].parameterType == ParameterType.UnityObject) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.UnityObject); if (linkedID < 0) { localParameters[i].objectValue = (Object)EditorGUILayout.ObjectField(label + ":", localParameters[i].objectValue, typeof(Object), true); } } else if (externalParameters[i].parameterType == ParameterType.GlobalVariable) { if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GlobalVariable); if (linkedID < 0) { VariablesManager variablesManager = AdvGame.GetReferences().variablesManager; localParameters[i].intValue = ShowVarSelectorGUI(label + ":", variablesManager.vars, localParameters[i].intValue); } } else { EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.InventoryItem) { if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.InventoryItem); if (linkedID < 0) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; localParameters[i].intValue = ShowInvItemSelectorGUI(label + ":", inventoryManager.items, localParameters[i].intValue); } } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.LocalVariable) { if (KickStarter.localVariables) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.LocalVariable); if (linkedID < 0) { localParameters[i].intValue = ShowVarSelectorGUI(label + ":", KickStarter.localVariables.localVars, localParameters[i].intValue); } } else { EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.String) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.String); if (linkedID < 0) { 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 (externalParameters[i].parameterType == ParameterType.Float) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Float); if (linkedID < 0) { localParameters[i].floatValue = EditorGUILayout.FloatField(label + ":", localParameters[i].floatValue); } } else if (externalParameters[i].parameterType == ParameterType.Integer) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Integer); if (linkedID < 0) { localParameters[i].intValue = EditorGUILayout.IntField(label + ":", localParameters[i].intValue); } } else if (externalParameters[i].parameterType == ParameterType.Vector3) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Vector3); if (linkedID < 0) { localParameters[i].vector3Value = EditorGUILayout.Vector3Field(label + ":", localParameters[i].vector3Value); } } else if (externalParameters[i].parameterType == ParameterType.Boolean) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Boolean); if (linkedID < 0) { 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; } } } parameterIDs[i] = linkedID; } EditorGUILayout.EndVertical(); }
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 (Application.isPlaying) { EditorGUILayout.LabelField(assetParameters[i].ID.ToString() + ": " + localParameters[i].parameterType.ToString() + " '" + label + "'"); EditorGUILayout.LabelField("Current value: '" + localParameters[i].GetLabel() + "'"); } else { 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); } } else 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) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (localParameters[i].gameObject); } } } else if (assetParameters[i].parameterType == ParameterType.UnityObject) { localParameters[i].objectValue = (Object)EditorGUILayout.ObjectField(label + ":", localParameters[i].objectValue, typeof(Object), true); } else if (assetParameters[i].parameterType == ParameterType.ComponentVariable) { localParameters[i].variables = (Variables)EditorGUILayout.ObjectField("'" + label + "' component:", localParameters[i].variables, typeof(Variables), true); if (localParameters[i].variables != null) { localParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", localParameters[i].variables.vars, localParameters[i].intValue); } } } if (i < (numParameters - 1)) { EditorGUILayout.Space(); } } }
public static GUIData SetParametersGUI(List <ActionParameter> externalParameters, bool isAssetFile, GUIData guiData, List <ActionParameter> ownParameters = null) { guiData = SyncLists(externalParameters, guiData); EditorGUILayout.BeginVertical("Button"); for (int i = 0; i < externalParameters.Count; i++) { string label = externalParameters[i].label; int linkedID = (i < guiData.parameterIDs.Count) ? guiData.parameterIDs[i] : -1; //guiData.fromParameters[i].ID = externalParameters[i].ID; guiData.fromParameters[i].parameterType = externalParameters[i].parameterType; if (externalParameters[i].parameterType == ParameterType.GameObject) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GameObject); if (linkedID < 0) { if (isAssetFile) { guiData.fromParameters[i].gameObject = (GameObject)EditorGUILayout.ObjectField(label + ":", guiData.fromParameters[i].gameObject, typeof(GameObject), true); if (guiData.fromParameters[i].gameObject != null) { if (!UnityVersionHandler.IsPrefabFile(guiData.fromParameters[i].gameObject)) { guiData.fromParameters[i].intValue = Action.FieldToID(guiData.fromParameters[i].gameObject, guiData.fromParameters[i].intValue, false, isAssetFile); guiData.fromParameters[i].gameObject = Action.IDToField(guiData.fromParameters[i].gameObject, guiData.fromParameters[i].intValue, true, false, isAssetFile); } else { // A prefab, ask if we want to affect the prefab or the scene-based instance? guiData.fromParameters[i].gameObjectParameterReferences = (GameObjectParameterReferences)EditorGUILayout.EnumPopup("GameObject parameter:", guiData.fromParameters[i].gameObjectParameterReferences); } } else { guiData.fromParameters[i].intValue = EditorGUILayout.IntField(label + " (ID #):", guiData.fromParameters[i].intValue); } } else { // Gameobject guiData.fromParameters[i].gameObject = (GameObject)EditorGUILayout.ObjectField(label + ":", guiData.fromParameters[i].gameObject, typeof(GameObject), true); guiData.fromParameters[i].intValue = 0; if (guiData.fromParameters[i].gameObject != null && guiData.fromParameters[i].gameObject.GetComponent <ConstantID>() == null) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (guiData.fromParameters[i].gameObject); } } } } else if (externalParameters[i].parameterType == ParameterType.UnityObject) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.UnityObject); if (linkedID < 0) { guiData.fromParameters[i].objectValue = (Object)EditorGUILayout.ObjectField(label + ":", guiData.fromParameters[i].objectValue, typeof(Object), true); } } else if (externalParameters[i].parameterType == ParameterType.GlobalVariable) { if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GlobalVariable); if (linkedID < 0) { VariablesManager variablesManager = AdvGame.GetReferences().variablesManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", variablesManager.vars, guiData.fromParameters[i].intValue); } } else { EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.InventoryItem) { if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.InventoryItem); if (linkedID < 0) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowInvItemSelectorGUI(label + ":", inventoryManager.items, guiData.fromParameters[i].intValue); } } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.Document) { if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Document); if (linkedID < 0) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowDocumentSelectorGUI(label + ":", inventoryManager.documents, guiData.fromParameters[i].intValue); } } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Documents.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.LocalVariable) { if (KickStarter.localVariables) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.LocalVariable); if (linkedID < 0) { guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", KickStarter.localVariables.localVars, guiData.fromParameters[i].intValue); } } else { EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning); } } else if (externalParameters[i].parameterType == ParameterType.String) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.String); if (linkedID < 0) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(label + ":", GUILayout.Width(145f)); EditorStyles.textField.wordWrap = true; guiData.fromParameters[i].stringValue = EditorGUILayout.TextArea(guiData.fromParameters[i].stringValue, GUILayout.MaxWidth(400f)); EditorGUILayout.EndHorizontal(); } } else if (externalParameters[i].parameterType == ParameterType.Float) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Float); if (linkedID < 0) { guiData.fromParameters[i].floatValue = EditorGUILayout.FloatField(label + ":", guiData.fromParameters[i].floatValue); } } else if (externalParameters[i].parameterType == ParameterType.Integer) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Integer); if (linkedID < 0) { guiData.fromParameters[i].intValue = EditorGUILayout.IntField(label + ":", guiData.fromParameters[i].intValue); } } else if (externalParameters[i].parameterType == ParameterType.Vector3) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Vector3); if (linkedID < 0) { guiData.fromParameters[i].vector3Value = EditorGUILayout.Vector3Field(label + ":", guiData.fromParameters[i].vector3Value); } } else if (externalParameters[i].parameterType == ParameterType.Boolean) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Boolean); if (linkedID < 0) { BoolValue boolValue = BoolValue.False; if (guiData.fromParameters[i].intValue == 1) { boolValue = BoolValue.True; } boolValue = (BoolValue)EditorGUILayout.EnumPopup(label + ":", boolValue); if (boolValue == BoolValue.True) { guiData.fromParameters[i].intValue = 1; } else { guiData.fromParameters[i].intValue = 0; } } } else if (externalParameters[i].parameterType == ParameterType.ComponentVariable) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.ComponentVariable); if (linkedID < 0) { guiData.fromParameters[i].variables = (Variables)EditorGUILayout.ObjectField("'" + label + "' component:", guiData.fromParameters[i].variables, typeof(Variables), true); if (guiData.fromParameters[i].variables != null) { guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", guiData.fromParameters[i].variables.vars, guiData.fromParameters[i].intValue); } } } if (i < guiData.parameterIDs.Count) { guiData.parameterIDs[i] = linkedID; } if (i < externalParameters.Count - 1) { EditorGUILayout.Space(); } } EditorGUILayout.EndVertical(); return(guiData); }
public void ShowGUI(bool isAssetFile, bool onlyEditValues = false, bool readOnly = false) { if (Application.isPlaying || readOnly) { EditorGUILayout.LabelField("Type:", parameterType.ToString()); EditorGUILayout.LabelField("Current value:", "'" + GetLabel() + "'"); CustomGUILayout.TokenLabel("[param:" + ID.ToString() + "]"); } else { if (onlyEditValues) { EditorGUILayout.LabelField("Type:", parameterType.ToString()); } else { parameterType = (ParameterType)EditorGUILayout.EnumPopup("Type:", parameterType); } switch (parameterType) { case ParameterType.Boolean: BoolValue boolValue = (intValue == 1) ? BoolValue.True : BoolValue.False; boolValue = (BoolValue)EditorGUILayout.EnumPopup("Default value:", boolValue); intValue = (boolValue == BoolValue.True) ? 1 : 0; break; case ParameterType.Integer: intValue = EditorGUILayout.IntField("Default value:", intValue); break; case ParameterType.Float: floatValue = EditorGUILayout.FloatField("Default value:", floatValue); break; case ParameterType.String: EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Default value:", GUILayout.Width(145f)); EditorStyles.textField.wordWrap = true; stringValue = EditorGUILayout.TextArea(stringValue, GUILayout.MaxWidth(400f)); EditorGUILayout.EndHorizontal(); break; case ParameterType.Vector3: vector3Value = EditorGUILayout.Vector3Field("Default value:", vector3Value); break; case ParameterType.UnityObject: objectValue = (Object)EditorGUILayout.ObjectField("Default value:", objectValue, typeof(Object), true); break; case ParameterType.Document: if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; intValue = ActionRunActionList.ShowDocumentSelectorGUI("Default value:", inventoryManager.documents, intValue); } else { EditorGUILayout.HelpBox("An Inventory Manager is required.", MessageType.Warning); } break; case ParameterType.InventoryItem: if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; intValue = ActionRunActionList.ShowInvItemSelectorGUI("Default value:", inventoryManager.items, intValue); } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning); } break; case ParameterType.GlobalVariable: if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager) { VariablesManager variablesManager = AdvGame.GetReferences().variablesManager; intValue = ActionRunActionList.ShowVarSelectorGUI("Default value:", variablesManager.vars, intValue); } else { EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning); } break; case ParameterType.LocalVariable: if (isAssetFile) { intValue = 0; EditorGUILayout.HelpBox("Local Variable parameters cannot have default values in ActionList Assets.", MessageType.Info); } else { if (KickStarter.localVariables) { intValue = ActionRunActionList.ShowVarSelectorGUI("Default value:", KickStarter.localVariables.localVars, intValue); } else { EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning); } } break; case ParameterType.ComponentVariable: if (isAssetFile) { variables = null; intValue = 0; EditorGUILayout.HelpBox("Component Variable parameters cannot have default values in ActionList Assets.", MessageType.Info); } else { variables = (Variables)EditorGUILayout.ObjectField("Variables component:", variables, typeof(Variables), true); if (variables != null) { intValue = ActionRunActionList.ShowVarSelectorGUI("Default value:", variables.vars, intValue); } } break; case ParameterType.GameObject: if (isAssetFile) { gameObject = (GameObject)EditorGUILayout.ObjectField("Default value:", gameObject, typeof(GameObject), true); if (gameObject != null) { if (!UnityVersionHandler.IsPrefabFile(gameObject)) { intValue = Action.FieldToID(gameObject, intValue, false, isAssetFile); gameObject = Action.IDToField(gameObject, intValue, true, false, isAssetFile); } else { // A prefab, ask if we want to affect the prefab or the scene-based instance? gameObjectParameterReferences = (GameObjectParameterReferences)EditorGUILayout.EnumPopup("GameObject parameter:", gameObjectParameterReferences); } } else { intValue = EditorGUILayout.IntField("Default value (ID #):", intValue); } } else { // Gameobject gameObject = (GameObject)EditorGUILayout.ObjectField("Default value:", gameObject, typeof(GameObject), true); intValue = 0; if (gameObject != null && gameObject.GetComponent <ConstantID> () == null) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (gameObject); } } break; default: break; } CustomGUILayout.TokenLabel("[param:" + ID.ToString() + "]"); } }
public static GUIData SetParametersGUI(List <ActionParameter> externalParameters, bool isAssetFile, GUIData guiData, List <ActionParameter> ownParameters = null) { guiData = SyncLists(externalParameters, guiData); CustomGUILayout.BeginVertical(); for (int i = 0; i < externalParameters.Count; i++) { string label = externalParameters[i].label; string tooltip = externalParameters[i].description; int linkedID = (i < guiData.parameterIDs.Count) ? guiData.parameterIDs[i] : -1; guiData.fromParameters[i].parameterType = externalParameters[i].parameterType; switch (externalParameters[i].parameterType) { case ParameterType.GameObject: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GameObject); if (linkedID < 0) { if (isAssetFile) { guiData.fromParameters[i].gameObject = (GameObject)CustomGUILayout.ObjectField <GameObject> (label + ":", guiData.fromParameters[i].gameObject, true, string.Empty, tooltip); if (guiData.fromParameters[i].gameObject) { if (!UnityVersionHandler.IsPrefabFile(guiData.fromParameters[i].gameObject)) { guiData.fromParameters[i].intValue = Action.FieldToID(guiData.fromParameters[i].gameObject, guiData.fromParameters[i].intValue, false, isAssetFile); guiData.fromParameters[i].gameObject = Action.IDToField(guiData.fromParameters[i].gameObject, guiData.fromParameters[i].intValue, true, false, isAssetFile); } else { // A prefab, ask if we want to affect the prefab or the scene-based instance? guiData.fromParameters[i].gameObjectParameterReferences = (GameObjectParameterReferences)EditorGUILayout.EnumPopup("GameObject parameter:", guiData.fromParameters[i].gameObjectParameterReferences); } } else { guiData.fromParameters[i].intValue = CustomGUILayout.IntField(label + " (ID #):", guiData.fromParameters[i].intValue, string.Empty, tooltip); } } else { // Gameobject guiData.fromParameters[i].gameObject = (GameObject)CustomGUILayout.ObjectField <GameObject> (label + ":", guiData.fromParameters[i].gameObject, true, string.Empty, tooltip); guiData.fromParameters[i].intValue = 0; if (guiData.fromParameters[i].gameObject && guiData.fromParameters[i].gameObject.GetComponent <ConstantID>() == null) { UnityVersionHandler.AddConstantIDToGameObject <ConstantID> (guiData.fromParameters[i].gameObject); } } } } break; case ParameterType.UnityObject: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.UnityObject); if (linkedID < 0) { guiData.fromParameters[i].objectValue = (Object)CustomGUILayout.ObjectField <Object> (label + ":", guiData.fromParameters[i].objectValue, true, string.Empty, tooltip); } } break; case ParameterType.GlobalVariable: { if (AdvGame.GetReferences() && AdvGame.GetReferences().variablesManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.GlobalVariable, -1, tooltip); if (linkedID < 0) { VariablesManager variablesManager = AdvGame.GetReferences().variablesManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", variablesManager.vars, guiData.fromParameters[i].intValue, tooltip); } } else { EditorGUILayout.HelpBox("A Variables Manager is required to pass Global Variables.", MessageType.Warning); } } break; case ParameterType.InventoryItem: { if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.InventoryItem, -1, tooltip); if (linkedID < 0) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowInvItemSelectorGUI(label + ":", inventoryManager.items, guiData.fromParameters[i].intValue, tooltip); } } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Inventory items.", MessageType.Warning); } } break; case ParameterType.Document: { if (AdvGame.GetReferences() && AdvGame.GetReferences().inventoryManager) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Document, -1, tooltip); if (linkedID < 0) { InventoryManager inventoryManager = AdvGame.GetReferences().inventoryManager; guiData.fromParameters[i].intValue = ActionRunActionList.ShowDocumentSelectorGUI(label + ":", inventoryManager.documents, guiData.fromParameters[i].intValue, tooltip); } } else { EditorGUILayout.HelpBox("An Inventory Manager is required to pass Documents.", MessageType.Warning); } } break; case ParameterType.LocalVariable: { if (KickStarter.localVariables) { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.LocalVariable, -1, tooltip); if (linkedID < 0) { guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", KickStarter.localVariables.localVars, guiData.fromParameters[i].intValue, tooltip); } } else { EditorGUILayout.HelpBox("A GameEngine prefab is required to pass Local Variables.", MessageType.Warning); } } break; case ParameterType.String: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.String, -1, tooltip); if (linkedID < 0) { guiData.fromParameters[i].stringValue = CustomGUILayout.TextArea(label, guiData.fromParameters[i].stringValue, string.Empty, tooltip); } } break; case ParameterType.Float: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Float, -1, tooltip); if (linkedID < 0) { guiData.fromParameters[i].floatValue = CustomGUILayout.FloatField(label + ":", guiData.fromParameters[i].floatValue, string.Empty, tooltip); } } break; case ParameterType.Integer: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Integer, -1, tooltip); if (linkedID < 0) { guiData.fromParameters[i].intValue = CustomGUILayout.IntField(label + ":", guiData.fromParameters[i].intValue, string.Empty, tooltip); } } break; case ParameterType.Vector3: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Vector3, -1, tooltip); if (linkedID < 0) { guiData.fromParameters[i].vector3Value = CustomGUILayout.Vector3Field(label + ":", guiData.fromParameters[i].vector3Value, string.Empty, tooltip); } } break; case ParameterType.Boolean: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.Boolean, -1, tooltip); if (linkedID < 0) { BoolValue boolValue = BoolValue.False; if (guiData.fromParameters[i].intValue == 1) { boolValue = BoolValue.True; } boolValue = (BoolValue)CustomGUILayout.EnumPopup(label + ":", boolValue, string.Empty, tooltip); if (boolValue == BoolValue.True) { guiData.fromParameters[i].intValue = 1; } else { guiData.fromParameters[i].intValue = 0; } } } break; case ParameterType.ComponentVariable: { linkedID = Action.ChooseParameterGUI(label + ":", ownParameters, linkedID, ParameterType.ComponentVariable); if (linkedID < 0) { guiData.fromParameters[i].variables = (Variables)EditorGUILayout.ObjectField("'" + label + "' component:", guiData.fromParameters[i].variables, typeof(Variables), true); if (guiData.fromParameters[i].variables != null) { guiData.fromParameters[i].intValue = ActionRunActionList.ShowVarSelectorGUI(label + ":", guiData.fromParameters[i].variables.vars, guiData.fromParameters[i].intValue); } } } break; default: break; } if (i < guiData.parameterIDs.Count) { guiData.parameterIDs[i] = linkedID; } if (i < externalParameters.Count - 1) { EditorGUILayout.Space(); } } CustomGUILayout.EndVertical(); return(guiData); }