// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/WorldState.cpp
// Function: WorldStateUpdater::ComputeShouldSeeOrNot(Vector)
bool WorldStateUpdater::ComputeShouldSeeOrNot(Vector pos) {
  double view_angle = 0;
  switch (GetSelf().GetViewWidth()) {
  case VW_Narrow:
    view_angle = 60;
    break;
  case VW_Normal:
    view_angle = 120;
    break;
  case VW_Wide:
    view_angle = 180;
    break;
  default:
    view_angle = 120;
    break;
  }

  //获得位置相对自己的夹角
  Vector dist_vec = pos - GetSelf().GetPos();
  double angle = GetNormalizeAngleDeg(dist_vec.Dir());
  angle = ::fabs(::GetNormalizeAngleDeg(angle - GetSelf().GetNeckGlobalDir()));
  double anglebuf = ASin((1 * 0.6 + 0.05 * dist_vec.Mod()) / dist_vec.Mod());
  angle += anglebuf; // different from ComputePlayerMaySeeOrNot

  //完全视角内可见
  double distbuf = 0.05 * ServerParam::instance().visibleDistance();
  if (dist_vec.Mod() <= ServerParam::instance().visibleDistance() - distbuf) {
    return true;
  }

  //角度在视角内
  if (angle > view_angle / 2) {
    return false;
  }

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x58, %rsp
movapd %xmm0, %xmm2
movq %rdi, %rbx
movslq 0x14(%rdi), %rax
movq 0x8(%rdi), %rcx
imulq $0x178, %rax, %rax      # imm = 0x178
addq %rcx, %rax
addq $-0xd0, %rax
movl 0x118(%rax), %ecx
decl %ecx
cmpl $0x2, %ecx
ja 0x69c53
movl %ecx, %ecx
leaq 0x5c04(%rip), %rdx      # 0x6f850
movsd (%rdx,%rcx,8), %xmm0
jmp 0x69c5b
movsd 0x4205(%rip), %xmm0     # 0x6de60
movapd %xmm0, -0x60(%rbp)
subsd 0x8(%rax), %xmm2
subsd 0x10(%rax), %xmm1
movapd 0x139e(%rip), %xmm3     # 0x6b010
movapd %xmm2, -0x30(%rbp)
andpd %xmm3, %xmm2
movsd 0x13bd(%rip), %xmm4     # 0x6b040
ucomisd %xmm2, %xmm4
movapd %xmm1, -0x20(%rbp)
jbe 0x69c9c
andpd %xmm1, %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm3, %xmm4
ja 0x69cba
movapd %xmm1, %xmm0
movapd -0x30(%rbp), %xmm1
callq 0x90d0
mulsd 0x1396(%rip), %xmm0     # 0x6b048
divsd 0x1396(%rip), %xmm0     # 0x6b050
movsd 0x139e(%rip), %xmm2     # 0x6b060
ucomisd %xmm0, %xmm2
jbe 0x69cdc
movsd 0x13a0(%rip), %xmm1     # 0x6b070
addsd %xmm1, %xmm0
ucomisd %xmm0, %xmm2
ja 0x69cd0
jmp 0x69d00
ucomisd 0x1364(%rip), %xmm0     # 0x6b048
jb 0x69d00
movsd 0x137a(%rip), %xmm2     # 0x6b068
movsd 0x1352(%rip), %xmm1     # 0x6b048
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x69cf6
movapd %xmm0, -0x40(%rbp)
movslq 0x14(%rbx), %rax
movq 0x8(%rbx), %rcx
imulq $0x178, %rax, %rax      # imm = 0x178
leaq (%rax,%rcx), %rdi
addq $-0xd0, %rdi
callq 0x5b2be
movsd 0x1334(%rip), %xmm1     # 0x6b060
movapd -0x40(%rbp), %xmm2
subsd %xmm0, %xmm2
ucomisd %xmm2, %xmm1
jbe 0x69d54
movsd 0x132d(%rip), %xmm0     # 0x6b070
movapd -0x20(%rbp), %xmm3
addsd %xmm0, %xmm2
ucomisd %xmm2, %xmm1
ja 0x69d48
jmp 0x69d7d
ucomisd 0x12ec(%rip), %xmm2     # 0x6b048
movapd -0x20(%rbp), %xmm3
jb 0x69d7d
movsd 0x12fd(%rip), %xmm0     # 0x6b068
movsd 0x12d5(%rip), %xmm1     # 0x6b048
addsd %xmm0, %xmm2
ucomisd %xmm1, %xmm2
jae 0x69d73
movapd %xmm2, -0x40(%rbp)
mulsd %xmm3, %xmm3
movapd -0x30(%rbp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm3, %xmm1
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm1
movapd %xmm0, %xmm2
movapd %xmm1, -0x30(%rbp)
jae 0x69dcd
movsd %xmm0, -0x20(%rbp)
movapd %xmm1, %xmm0
callq 0x93c0
xorpd %xmm3, %xmm3
movapd -0x30(%rbp), %xmm1
movapd %xmm0, %xmm2
movsd -0x20(%rbp), %xmm0
mulsd 0x2523(%rip), %xmm2     # 0x6c2f8
addsd 0x1be3(%rip), %xmm2     # 0x6b9c0
ucomisd %xmm3, %xmm1
jae 0x69df6
movapd %xmm1, %xmm0
movsd %xmm2, -0x20(%rbp)
callq 0x93c0
movsd -0x20(%rbp), %xmm2
divsd %xmm0, %xmm2
ucomisd 0x24ce(%rip), %xmm2     # 0x6c2d0
jae 0x69e2d
movsd 0x24cc(%rip), %xmm0     # 0x6c2d8
ucomisd %xmm2, %xmm0
jae 0x69e37
movapd %xmm2, %xmm0
callq 0x9840
mulsd 0x1225(%rip), %xmm0     # 0x6b048
divsd 0x1225(%rip), %xmm0     # 0x6b050
jmp 0x69e3f
movsd 0x127b(%rip), %xmm0     # 0x6b0b0
jmp 0x69e3f
movsd 0x1279(%rip), %xmm0     # 0x6b0b8
movsd %xmm0, -0x20(%rbp)
callq 0x4a75c
movsd 0x3178(%rax), %xmm0
mulsd 0x249f(%rip), %xmm0     # 0x6c2f8
movsd %xmm0, -0x48(%rbp)
xorpd %xmm1, %xmm1
movapd -0x30(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x69e73
sqrtsd %xmm0, %xmm0
jmp 0x69e78
callq 0x93c0
movapd %xmm0, -0x30(%rbp)
callq 0x4a75c
movsd 0x3178(%rax), %xmm0
subsd -0x48(%rbp), %xmm0
movapd -0x30(%rbp), %xmm2
cmplepd %xmm0, %xmm2
movapd -0x40(%rbp), %xmm1
andpd 0x116a(%rip), %xmm1     # 0x6b010
addsd -0x20(%rbp), %xmm1
movapd -0x60(%rbp), %xmm0
cmpnltpd %xmm1, %xmm0
orpd %xmm2, %xmm0
movd %xmm0, %eax
andb $0x1, %al
addq $0x58, %rsp
popq %rbx
popq %rbp
retq