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; }