Beispiel #1
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();
            }
        }
Beispiel #2
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);
        }
Beispiel #3
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);
        }