Ejemplo n.º 1
0
    public static void  ShowWindow()
    {
        EditorWindow window = EditorWindow.GetWindow(typeof(FactsDefinitionWindow));

        window.position = new Rect(200, 200, 1000, 700);


        definitions = FactDefinitionsContainer.Load(definitionsPath);

        /*List<FactDefinition> defaultDefinitions = new List<FactDefinition> (new FactDefinition[] {
         *                                      new FactDefinition ("Equal", "Relation", "Self", "arg1.Equals(arg2)"),
         *                                      new FactDefinition ("NotEqual", "Relation", "Self", "!arg1.Equals(arg2)")});
         *
         *
         * foreach (FactDefinition fd in defaultDefinitions)
         *      if (!definitions.Contains (fd))
         *              definitions.Add (fd);*/



        argsTypes = ArgumentTypes.Load(argumentsPath);

        List <string> defaultArgsTypes = new List <string> (new string[] {
            "Self",
            "Position",
            "Rotation",
            "Scale",
            "Mass"
        });


        foreach (string argType in defaultArgsTypes)
        {
            if (!argsTypes.Contains(argType))
            {
                argsTypes.Add(argType);
            }
        }
    }
Ejemplo n.º 2
0
    // Use this for initialization
    void Start()
    {
        compileExpressionParser();


        //Knowledge update rate
        KnowledgeUpdateWindow.LoadFromFile();

        //Get goal
        goal = (CompoundTask)serializedGoal.DeSerialize(null);



        //Initialize knowledge

        foreach (SerializedFact fact in serializedKnowledge)
        {
            Atom newFact = new Atom(fact.name, fact.sign);

            foreach (string objName in fact.values)
            {
                newFact.addTerm(new Term(GameObject.Find(objName)));
            }

            state.addFact(newFact);
        }


        //Initialize variables


        foreach (SerializedVariable var in serializedDomainVariables)
        {
            if (var.key != "" && var.value != "")
            {
                domainVariables [serializedDomainVariables.IndexOf(var)].value = GameObject.Find(var.value);
            }
        }
        //Instantiate variables
        InstantiateVariables(goal, domainVariables);

        //Add sensor
        if (sensor == 0)
        {
            sensorySystem = new CameraSensor(this);
        }
        else if (sensor == 1)
        {
            sensorySystem = new RadiusSensor(this, radiusLength);
        }


        try {
            definitions = FactDefinitionsContainer.Load(FactsDefinitionWindow.definitionsPath).list;
        }

        catch (Exception e) {
            Debug.Log(e.Message);
        }



        //Agent FSM
        FSM = new AgentStateMachine(AgentState.IDLE, this);

        //Action manager
        actionManager = new ActionManager(this);



        //Coordination
        communicationSystem = new CommunicationSystem(this);

        groupMembers = new List <HTNAgent> ();

        //Personalities
        knownPersonalities = PersonalitiesContainer.Load(PersonalityEditorWindow.path).list;
    }