Beispiel #1
0
        public static GameObject WithinSight(
            Transform transform,
            Vector3 positionOffset,
            float fieldOfViewAngle,
            float viewDistance,
            GameObject targetObject,
            Vector3 targetOffset,
            bool usePhysics2D,
            float angleOffset2D,
            out float angle,
            int ignoreLayerMask,
            bool useTargetBone,
            HumanBodyBones targetBone)
        {
            if (Object.op_Equality((Object)targetObject, (Object)null))
            {
                angle = 0.0f;
                return((GameObject)null);
            }
            Animator componentForType;

            if (useTargetBone && Object.op_Inequality((Object)(componentForType = MovementUtility.GetComponentForType <Animator>(targetObject)), (Object)null))
            {
                Transform boneTransform = componentForType.GetBoneTransform(targetBone);
                if (Object.op_Inequality((Object)boneTransform, (Object)null))
                {
                    targetObject = ((Component)boneTransform).get_gameObject();
                }
            }
            Vector3 vector3 = Vector3.op_Subtraction(targetObject.get_transform().get_position(), transform.TransformPoint(positionOffset));

            if (usePhysics2D)
            {
                Vector3     eulerAngles = transform.get_eulerAngles();
                ref Vector3 local       = ref eulerAngles;
                local.z   = (__Null)(local.z - (double)angleOffset2D);
                angle     = Vector3.Angle(vector3, Quaternion.op_Multiply(Quaternion.Euler(eulerAngles), Vector3.get_up()));
                vector3.z = (__Null)0.0;
            }