public void POINT(object[] args)
{
GameObject agent = GameObject.FindGameObjectWithTag ("Agent");
if (agent != null) {
Animator anim = agent.GetComponentInChildren<Animator> ();
GameObject leftGrasper = anim.GetBoneTransform (HumanBodyBones.LeftHand).transform.gameObject;
GameObject rightGrasper = anim.GetBoneTransform (HumanBodyBones.RightHand).transform.gameObject;
GameObject grasper;
if (args [args.Length - 1] is bool) {
if ((bool)args [args.Length - 1] == true) {
foreach (object arg in args) {
if (arg is GameObject) {
// find bounds corner closest to grasper
Bounds bounds = Helper.GetObjectWorldSize((arg as GameObject));
// which hand is closer?
float leftToGoalDist = (leftGrasper.transform.position-bounds.ClosestPoint(leftGrasper.transform.position)).magnitude;
float rightToGoalDist = (rightGrasper.transform.position-bounds.ClosestPoint(rightGrasper.transform.position)).magnitude;
if (leftToGoalDist < rightToGoalDist) {
grasper = leftGrasper;
agent.GetComponent<GraspScript>().grasper = (int)Gestures.HandPose.LeftPoint;
}
else {
grasper = rightGrasper;
agent.GetComponent<GraspScript>().grasper = (int)Gestures.HandPose.RightPoint;
}
IKControl ikControl = agent.GetComponent<IKControl> ();
if (ikControl != null) {
Vector3 target;
if (grasper == leftGrasper) {
target = new Vector3 (bounds.min.x, bounds.min.y, bounds.center.z);
ikControl.leftHandObj.transform.position = target;
}
else {
target = new Vector3 (bounds.max.x, bounds.min.y, bounds.center.z);
ikControl.rightHandObj.transform.position = target;
}
}
}
}
}
}
}
}