keybode

h1z1 WorldToScreen

Jan 19th, 2015
398
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. bool WorldToScreen(const Vector3& vOrigin, Vector3& vOut) {
  2.     DWORD_PTR dwGraphics = (DWORD_PTR)this;
  3.  
  4.     DWORD_PTR dwCamera = *(DWORD_PTR*)(dwGraphics + 0x48);
  5.     DWORD_PTR dwCameraMatrix = *(DWORD_PTR*)(dwCamera + 0x20);
  6.  
  7.     dwCameraMatrix += 0x10;
  8.  
  9.     D3DXMATRIX d3dmatrix = *(D3DXMATRIX*)(dwCameraMatrix + 0x1A0);
  10.  
  11.     D3DXMatrixTranspose(&d3dmatrix, &d3dmatrix);
  12.  
  13.     Matrix4x4 matrix = *(Matrix4x4*)&d3dmatrix;
  14.  
  15.     matrix._21 *= -1;
  16.     matrix._22 *= -1;
  17.     matrix._23 *= -1;
  18.     matrix._24 *= -1;
  19.  
  20.     float w = matrix.GetAxis(3).Dot(vOrigin) + matrix.m[3][3];
  21.  
  22.     if (w < 0.098) {
  23.         return false;
  24.     }
  25.  
  26.     float x = matrix.GetAxis(0).Dot(vOrigin) + matrix.m[0][3];
  27.     float y = matrix.GetAxis(1).Dot(vOrigin) + matrix.m[1][3];
  28.  
  29.     vOut.x = (m_nScreenWidth / 2) * (1.0 + x / w);
  30.     vOut.y = (m_nScreenHeight / 2) * (1.0 - y / w);
  31.  
  32.     return true;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment