public List <string> GetGlobalVariablesName(GraphVarType vartype) { List <string> variablesName = null; switch (vartype) { case GraphVarType.Integer: variablesName = settings.Int_VariablesName.ToList(); break; case GraphVarType.Float: variablesName = settings.Float_VariablesName.ToList(); break; case GraphVarType.Double: variablesName = settings.Double_VariablesName.ToList(); break; case GraphVarType.Boolean: variablesName = settings.Bool_VariablesName.ToList(); break; } return(variablesName); }
private void ClearNewVarProperties(bool openNewVarPanel = false) { show_defaultErrorPanel = false; new_varErrorMsg = ""; new_varName = FSMGUtility.StringTag_Undefined; new_varType = GraphVarType.Integer; show_newVarPanel = openNewVarPanel; }
public List <string> GetVariablesName(GraphVarType vartype, GraphVarLocalType localType) { if (localType == GraphVarLocalType.Global) { return(GetGlobalVariablesName(vartype)); } else { return(GetLocalVariablesName(vartype)); } }
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); }
/// <summary> /// Remove variavel do gráfico. /// Tenha em mente que todos os <see cref="FSMBehaviour"/> que utilizam este gráfico também ficarão /// sem esta variável. /// </summary> /// <param name="varName">Nome da variavel</param> /// <param name="varType">Tipo da variavel</param> public void RemoveVariable(string varName, GraphVarType varType) { switch (varType) { case GraphVarType.Boolean: boolVars.Remove(varName); break; case GraphVarType.Double: doubleVars.Remove(varName); break; case GraphVarType.Float: floatVars.Remove(varName); break; case GraphVarType.Integer: intVars.Remove(varName); break; } }
public List <string> GetLocalVariablesName(GraphVarType vartype) { TagVarList taglist; GetTagVariables(out taglist); List <string> variablesName = new List <string>(); if (taglist.Count > 0) { foreach (string varname in taglist.Keys) { if (taglist[varname] == vartype) { variablesName.Add(varname); } } } taglist.Clear(); taglist = null; return(variablesName); }
/// <summary> /// Sincroniza as variaveis e trajetos do componente com as variaveis do gráfico de estados /// </summary> public void SyncVariablesAndTargets() { SyncTargets(); if (graph == null) { return; } TagVarList graphVariables = null; TagVarList myTagVariables = GetVariablesAsTag(); _graph.GetTagVariables(out graphVariables); //Remove variaveis que estejam somente no componente mas que nao estejam no grafico foreach (string variable in myTagVariables.Keys) { if (graphVariables.ContainsKey(variable) == false) { RemoveVariable(variable, myTagVariables[variable]); } } myTagVariables.Clear(); myTagVariables = null; //Adiciona variaveis marcadas no grafico que não existam no FSM foreach (string variable in graphVariables.Keys) { GraphVarType varType = graphVariables[variable]; switch (varType) { case GraphVarType.Boolean: if (boolVars.ContainsKey(variable) == false) { boolVars.Add(variable, new BoolVar()); } break; case GraphVarType.Double: if (doubleVars.ContainsKey(variable) == false) { doubleVars.Add(variable, new DoubleVar()); } break; case GraphVarType.Float: if (floatVars.ContainsKey(variable) == false) { floatVars.Add(variable, new FloatVar()); } break; case GraphVarType.Integer: if (intVars.ContainsKey(variable) == false) { intVars.Add(variable, new IntVar()); } break; } } graphVariables.Clear(); graphVariables = null; }