示例#1
0
        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);
        }
示例#2
0
 private void ClearNewVarProperties(bool openNewVarPanel = false)
 {
     show_defaultErrorPanel = false;
     new_varErrorMsg        = "";
     new_varName            = FSMGUtility.StringTag_Undefined;
     new_varType            = GraphVarType.Integer;
     show_newVarPanel       = openNewVarPanel;
 }
示例#3
0
 public List <string> GetVariablesName(GraphVarType vartype, GraphVarLocalType localType)
 {
     if (localType == GraphVarLocalType.Global)
     {
         return(GetGlobalVariablesName(vartype));
     }
     else
     {
         return(GetLocalVariablesName(vartype));
     }
 }
示例#4
0
        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();
            }
        }
示例#5
0
        /// <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);
        }
示例#6
0
        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);
        }
示例#7
0
        /// <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;
            }
        }
示例#8
0
        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);
        }
示例#9
0
        /// <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;
        }