// 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 = ""; } } } } }
public void SurveyRelations() { foreach (Voxeme voxeme in objectSelector.allVoxemes) { SatisfactionTest.ReasonFromAffordances("put", voxeme); } UpdateRelationStrings(); }
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;*/ }
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); } }
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 } } //} }