Predicates.GRASP C# (CSharp) Метод

GRASP() публичный Метод

public GRASP ( object args ) : void
args object
Результат void
    public void GRASP(object[] args)
    {
        GameObject agent = GameObject.FindGameObjectWithTag ("Agent");

        if (agent != null) {
            Bounds bounds = Helper.GetObjectWorldSize((args[0] as GameObject));
            Animator anim = agent.GetComponentInChildren<Animator> ();
            GameObject leftGrasper = anim.GetBoneTransform (HumanBodyBones.LeftHand).transform.gameObject;
            GameObject rightGrasper = anim.GetBoneTransform (HumanBodyBones.RightHand).transform.gameObject;
            GameObject grasper;
            Transform leftGraspTracker = agent.GetComponent<IKControl> ().leftHandObj;
            Transform rightGraspTracker = agent.GetComponent<IKControl> ().rightHandObj;
            Vector3 offset = agent.GetComponent<GraspScript> ().graspTrackerOffset;

            // make sure we're reaching toward the object first
            if (!bounds.Contains(leftGraspTracker.position-offset) &&
                !bounds.Contains(rightGraspTracker.position-offset)) {
                eventManager.InsertEvent (string.Format ("reach({0})", (args[0] as GameObject).name), 0);
                //eventManager.RemoveEvent (eventManager.events.Count - 1);
                return;
            }

            if (args [args.Length - 1] is bool) {
                if ((bool)args [args.Length - 1] == true) {
                    foreach (object arg in args) {
                        if (arg is GameObject) {
                            //Debug.Log (rightGrasper.GetComponent<BoxCollider> ().bounds);
                            //Debug.Log (bounds);
                            if (leftGrasper.GetComponent<BoxCollider>().bounds.Intersects(bounds)) {
                                (arg as GameObject).GetComponent<Rigging> ().ActivatePhysics (false);
                                RiggingHelper.RigTo ((arg as GameObject), leftGrasper);
                                Voxeme voxeme = (arg as GameObject).GetComponent<Voxeme> ();
                                voxeme.enabled = true;
                                voxeme.isGrasped = true;
                                voxeme.graspTracker = agent.GetComponent<IKControl>().leftHandObj;
                                voxeme.grasperCoord = agent.GetComponent<GraspScript>().leftGrasperCoord;
                            }
                            else if (rightGrasper.GetComponent<BoxCollider>().bounds.Intersects(bounds)) {
                                (arg as GameObject).GetComponent<Rigging> ().ActivatePhysics (false);
                                RiggingHelper.RigTo ((arg as GameObject), rightGrasper);
                                Voxeme voxeme = (arg as GameObject).GetComponent<Voxeme> ();
                                voxeme.enabled = true;
                                voxeme.isGrasped = true;
                                voxeme.graspTracker = agent.GetComponent<IKControl>().rightHandObj;
                                voxeme.grasperCoord = agent.GetComponent<GraspScript>().rightGrasperCoord;
                            }
                            else {
                                OutputHelper.PrintOutput(OutputController.Role.Affector,"I can't grasp the " + (arg as GameObject).name + ".  I'm not touching it.");
                            }
                        }
                    }
                }
            }
        }
    }