public void LIFT(object[] args)
{
// look for agent
GameObject agent = GameObject.FindGameObjectWithTag("Agent");
if (agent != null) {
// add preconditions
if (!SatisfactionTest.IsSatisfied (string.Format ("reach({0})", (args [0] as GameObject).name))) {
eventManager.InsertEvent (string.Format ("reach({0})", (args [0] as GameObject).name), 0);
eventManager.InsertEvent (string.Format ("grasp({0})", (args [0] as GameObject).name), 1);
eventManager.InsertEvent (eventManager.evalOrig [string.Format ("lift({0})", (args [0] as GameObject).name)], 1);
eventManager.RemoveEvent (3);
return;
}
else {
if (!SatisfactionTest.IsSatisfied (string.Format ("grasp({0})", (args [0] as GameObject).name))) {
eventManager.InsertEvent (string.Format ("grasp({0})", (args [0] as GameObject).name), 0);
eventManager.InsertEvent (eventManager.evalOrig [string.Format ("lift({0})", (args [0] as GameObject).name)], 1);
eventManager.RemoveEvent (2);
return;
}
}
// add postconditions
if (args [args.Length - 1] is bool) {
if ((bool)args [args.Length - 1] == true) {
eventManager.InsertEvent (string.Format ("ungrasp({0})", (args [0] as GameObject).name), 1);
}
}
}
// override physics rigging
foreach (object arg in args) {
if (arg is GameObject) {
(arg as GameObject).GetComponent<Rigging> ().ActivatePhysics(false);
}
}
Vector3 targetPosition = Vector3.zero;
if (args [0] is GameObject) {
GameObject obj = (args [0] as GameObject);
targetPosition = new Vector3 (obj.transform.position.x,obj.transform.position.y+UnityEngine.Random.value, obj.transform.position.z);
//Debug.Log (targetPosition);
//targetPosition = new Vector3 (obj.transform.position.x+1.0f, obj.transform.position.y, obj.transform.position.z);
Voxeme voxComponent = obj.GetComponent<Voxeme> ();
if (voxComponent != null) {
if (!voxComponent.enabled) {
voxComponent.gameObject.transform.parent = null;
voxComponent.enabled = true;
}
voxComponent.targetPosition = targetPosition;
}
}
// add to events manager
if (args[args.Length-1] is bool) {
if ((bool)args[args.Length-1] == false) {
eventManager.events[0] = "lift("+(args [0] as GameObject).name+","+Helper.VectorToParsable(targetPosition)+")";
}
}
return;
}