private void Draw_CreateVariablePanel() { if (fsmBehaviour.graph == null) { show_newVarPanel = false; return; } if (show_newVarPanel == false) { if (GUILayout.Button("Create New Variable")) { ClearNewVarProperties(true); } } else if (show_newVarPanel) { if (GUILayout.Button("Cancel")) { ClearNewVarProperties(); } //Create Pannel EditorGUILayout.BeginHorizontal(EditorStyles.helpBox); //NewVar field name new_varName = EditorGUILayout.TextField(new_varName); //NewVar field type new_varType = (GraphVarType)EditorGUILayout.EnumPopup(new_varType); //Create newVariable at fsm componnent and reply the tag at graph if (GUILayout.Button("Create")) { GraphVarAddErrorsType error = fsmBehaviour.AddVariable(new_varName, new_varType); if (error != GraphVarAddErrorsType.none) { if (error == GraphVarAddErrorsType.graph_already_exists) { show_graphErrorPanel = true; } show_defaultErrorPanel = true; new_varErrorMsg = "Error: " + error.ToString(); } new_varType = GraphVarType.Integer; new_varName = FSMGUtility.StringTag_Undefined; show_newVarPanel = false; } EditorGUILayout.EndHorizontal(); } }
/// <summary> /// Adiciona uma variavel ao gráfico caso éla ainda não exista. /// Tenha em mente que esta variavel sera adicionada ao gráfico ao qual este componente pertence, /// isto significa que todos os FSM que utilizem este mesmo gráfico também terão sua própria versão /// desta variavel. Caso você remova utizando <seealso cref="RemoveVariable(string, GraphVarType)"/> /// todos os componentes <seealso cref="FSMBehaviour"/> ficarão sem ela. /// </summary> /// <param name="varName">Nome da variavel</param> /// <param name="varType">Tipo da variavel</param> /// <returns><see cref="GraphVarAddErrorsType.none"/> caso seja armazenada com sucesso. </returns> public GraphVarAddErrorsType AddVariable(string varName, GraphVarType varType) { GraphVarAddErrorsType result = GraphVarAddErrorsType.none; if (varName == FSMGUtility.StringTag_Undefined) { result = GraphVarAddErrorsType.invalidName; return(result); } //Primeiro verifico se a variavel ja nao esta presente no COmponente. if (CheckIfVarExist(varName)) { result = GraphVarAddErrorsType.fsm_already_exists; return(result); } //Depois verifico se a variavel já esta marcada nó gráfico result = graph.AddTagVariable(varName, varType); if (result != GraphVarAddErrorsType.none) { return(result); } switch (varType) { case GraphVarType.Boolean: boolVars.Add(varName, new BoolVar()); break; case GraphVarType.Double: doubleVars.Add(varName, new DoubleVar()); break; case GraphVarType.Float: floatVars.Add(varName, new FloatVar()); break; case GraphVarType.Integer: intVars.Add(varName, new IntVar()); break; } return(result); }
public GraphVarAddErrorsType AddTagVariable(string varName, GraphVarType varType) { GraphVarAddErrorsType result = GraphVarAddErrorsType.none; if (varName == FSMGUtility.StringTag_Undefined) { return(GraphVarAddErrorsType.invalidName); } if (variables.ContainsKey(varName) == true) { result = GraphVarAddErrorsType.graph_already_exists; } else { variables.Add(varName, varType); } return(result); }