override public void ShowGUI(List <ActionParameter> parameters) { inventoryManager = AdvGame.GetReferences().inventoryManager; // Select Inventory item setVarAsPropertyMethod = (SetVarAsPropertyMethod)EditorGUILayout.EnumPopup("Get property of:", setVarAsPropertyMethod); if (setVarAsPropertyMethod == SetVarAsPropertyMethod.SpecificItem) { ShowInvSelectGUI(parameters); } // Select item property ShowInvPropertyGUI(); EditorGUILayout.Space(); // Select variable if (isAssetFile) { varLocation = VariableLocation.Global; } else { varLocation = (VariableLocation)EditorGUILayout.EnumPopup("Variable source:", varLocation); } if (varLocation == VariableLocation.Global) { if (AdvGame.GetReferences().variablesManager) { ShowVarGUI(AdvGame.GetReferences().variablesManager.vars, parameters, ParameterType.GlobalVariable); } } else if (varLocation == VariableLocation.Local) { if (localVariables) { ShowVarGUI(localVariables.localVars, parameters, ParameterType.LocalVariable); } else { EditorGUILayout.HelpBox("No 'Local Variables' component found in the scene. Please add an AC GameEngine object from the Scene Manager.", MessageType.Info); } } if (inventoryManager != null && inventoryManager.invVars != null && inventoryManager.invVars.Count > 0) { if (varType != propertyType && varType != VariableType.String) { EditorGUILayout.HelpBox("The chosen Inventory Item Property and Variable must share the same Type, or the Variable must be a String.", MessageType.Warning); } } AfterRunningOption(); }
public override void ShowGUI(List <ActionParameter> parameters) { inventoryManager = AdvGame.GetReferences().inventoryManager; // Select Inventory item setVarAsPropertyMethod = (SetVarAsPropertyMethod)EditorGUILayout.EnumPopup("Get property of:", setVarAsPropertyMethod); if (setVarAsPropertyMethod == SetVarAsPropertyMethod.SpecificItem) { ShowInvSelectGUI(parameters); } // Select item property ShowInvPropertyGUI(); EditorGUILayout.Space(); // Select variable varLocation = (VariableLocation)EditorGUILayout.EnumPopup("Variable source:", varLocation); switch (varLocation) { case VariableLocation.Global: if (AdvGame.GetReferences().variablesManager) { ShowVarGUI(AdvGame.GetReferences().variablesManager.vars, parameters, ParameterType.GlobalVariable); } break; case VariableLocation.Local: if (!isAssetFile) { if (localVariables) { ShowVarGUI(localVariables.localVars, parameters, ParameterType.LocalVariable); } else { EditorGUILayout.HelpBox("No 'Local Variables' component found in the scene. Please add an AC GameEngine object from the Scene Manager.", MessageType.Info); } } else { EditorGUILayout.HelpBox("Local variables cannot be accessed in ActionList assets.", MessageType.Info); } break; case VariableLocation.Component: varParameterID = Action.ChooseParameterGUI("Component variable:", parameters, varParameterID, ParameterType.ComponentVariable); if (varParameterID >= 0) { variables = null; variablesConstantID = 0; } else { variables = (Variables)EditorGUILayout.ObjectField("Component:", variables, typeof(Variables), true); variablesConstantID = FieldToID <Variables> (variables, variablesConstantID); variables = IDToField <Variables> (variables, variablesConstantID, false); if (variables != null) { ShowVarGUI(variables.vars, null, ParameterType.ComponentVariable); } } break; } if (inventoryManager != null && inventoryManager.invVars != null && inventoryManager.invVars.Count > 0) { if (varType != propertyType && varType != VariableType.String) { EditorGUILayout.HelpBox("The chosen Inventory Item Property and Variable must share the same Type, or the Variable must be a String.", MessageType.Warning); } } AfterRunningOption(); }