コード例 #1
0
ファイル: EventManager.cs プロジェクト: subahur/voxicon
    // Update is called once per frame
    void Update()
    {
        if (eventsStatus.Keys.Count > 0)
        {
            Debug.Log(eventsStatus.Keys.Count);
            String nextIncompleteEvent = GetNextIncompleteEvent();
            Debug.Log("Next incomplete event: " + nextIncompleteEvent);
            Debug.Log("Next queued event: " + nextQueuedEvent);

            if (nextIncompleteEvent != "")
            {
                if (SatisfactionTest.IsSatisfied(nextIncompleteEvent) == true)
                {
                    Debug.Log("Satisfied " + nextIncompleteEvent);
                    eventsStatus[nextIncompleteEvent] = true;
                    if (nextQueuedEvent != "")
                    {
                        SatisfactionTest.ComputeSatisfactionConditions(nextQueuedEvent);
                        Debug.Log("eventsStatus.Keys.Count:" + eventsStatus.Keys.Count.ToString());
                        ExecuteCommand(nextQueuedEvent);
                    }
                    else
                    {
                        nextIncompleteEvent = "";
                    }
                }
            }
        }
    }
コード例 #2
0
ファイル: RelationTracker.cs プロジェクト: VoxML/Jarvis
            public void SurveyRelations()
            {
                foreach (Voxeme voxeme in objectSelector.allVoxemes)
                {
                    SatisfactionTest.ReasonFromAffordances("put", voxeme);
                }

                UpdateRelationStrings();
            }
コード例 #3
0
ファイル: EventManager.cs プロジェクト: subahur/voxicon
    String GetNextIncompleteEvent()
    {
        String[] keys   = new String[eventsStatus.Keys.Count];
        bool[]   values = new bool[eventsStatus.Keys.Count];

        eventsStatus.Keys.CopyTo(keys, 0);
        eventsStatus.Values.CopyTo(values, 0);

        String nextIncompleteEvent = "";

        for (int i = 0; i < keys.Length; i++)
        {
            if ((bool)eventsStatus[keys[i]] == false)
            {
                nextIncompleteEvent = (String)keys[i];
                if (i < events.Count - 1)
                {
                    SatisfactionTest.ComputeSatisfactionConditions(events[i + 1]);
                    eventsStatus.Keys.CopyTo(keys, 0);
                    eventsStatus.Values.CopyTo(values, 0);
                    nextQueuedEvent = (String)keys[i + 1];
                }
                else
                {
                    nextQueuedEvent = "";
                    //put(spoon,on(mug));put(apple,on(plate))
                    //put(block1,on(block2));put(block3,on(block1))
                }
                break;
            }
        }

        return(nextIncompleteEvent);

        /*SatisfactionTest.ComputeSatisfactionConditions(events[eventsStatus.Keys.Count-1]);
         *
         * eventsStatus.Keys.CopyTo (keys,0);
         * eventsStatus.Values.CopyTo (values,0);
         *
         * String nextIncompleteEvent = keys [keys.Length - 1];
         *
         * if (events.Count > eventsStatus.Keys.Count) {
         *      nextQueuedEvent = SatisfactionTest.ComputeSatisfactionConditions(events[eventsStatus.Keys.Count]);
         *
         *      eventsStatus.Keys.CopyTo (keys,0);
         *      eventsStatus.Values.CopyTo (values,0);
         *
         *      nextQueuedEvent = keys [keys.Length - 1];
         * }
         * else {
         *      nextQueuedEvent = "";
         * }
         *
         * return nextIncompleteEvent;*/
    }
コード例 #4
0
ファイル: InputController.cs プロジェクト: subahur/voxicon
    void OnGUI()
    {
        Event e = Event.current;

        if (e.keyCode == KeyCode.Return)
        {
            if (inputString != "")
            {
                eventManager.ClearEvents();
                foreach (KeyValuePair <String, String> kv in macros.commandMacros)
                {
                    if (inputString == kv.Key)
                    {
                        inputString = kv.Value;
                        break;
                    }
                }
                Debug.Log("User entered: " + inputString);
                commands = inputString.Split(';');
                //String commandString = inputString;
                foreach (String commandString in commands)
                {
                    ClearRDFTriples();
                    ClearSkolems();
                    ParseCommand(commandString);
                    FinishSkolemization();
                    skolemized = Skolemize(commandString);
                    Debug.Log("Skolemized command: " + skolemized);
                    //EvaluateSkolemizedCommand(skolemized);
                    EvaluateSkolemConstants();
                    evaluated = ApplySkolems(skolemized);
                    Debug.Log("Evaluated command: " + evaluated);
                    eventManager.events.Add(evaluated);
                }

                //foreach (String ev in eventManager.events) {
                SatisfactionTest.ComputeSatisfactionConditions(eventManager.events[0]);
                //}

                eventManager.ExecuteNextCommand();
            }
            inputString = GUI.TextField(new Rect(0, 0, 600, 25), "");
        }
        else
        {
            inputString = GUI.TextField(new Rect(0, 0, 600, 25), inputString);
        }
    }
コード例 #5
0
            void LateUpdate()
            {
                //if (Input.GetKeyDown (KeyCode.R)) {
                if (resolveDiscrepancies)
                {
                    //Debug.Log ("resolving");
                    PhysicsHelper.ResolveAllPhysicsDiscrepancies(macroEventSatisfied);
                    //Debug.Break ();
                    if (eventManager.events.Count > 0)
                    {
                        catchupTimer.Interval = 1;
                    }

                    Hashtable predArgs    = Helper.ParsePredicate(testSatisfied);
                    String    predString  = "";
                    String[]  argsStrings = null;

                    foreach (DictionaryEntry entry in predArgs)
                    {
                        predString  = (String)entry.Key;
                        argsStrings = ((String)entry.Value).Split(new char[] { ',' });
                    }

                    // TODO: better than this
                    // which predicates result in affordance-based consequence?
                    if ((predString == "ungrasp") || (predString == "lift") ||
                        (predString == "turn") || (predString == "roll") ||
                        (predString == "slide") || (predString == "put"))
                    {
                        SatisfactionTest.ReasonFromAffordances(predString,
                                                               GameObject.Find(argsStrings[0] as String)
                                                               .GetComponent <Voxeme>()); // we need to talk (do physics reactivation in here?) // replace ReevaluateRelationships
                    }
                }

                //}
            }