Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. bool CMisc::WorldToScreen(Vector3 &vOrigin, Vector3 &vScreen)
  2. {
  3. const matrix3x4& worldToScreen = Interfaces.Engine->WorldToScreenMatrix();
  4.  
  5. float w = worldToScreen[3][0] * vOrigin[0] + worldToScreen[3][1] * vOrigin[1] + worldToScreen[3][2] * vOrigin[2] + worldToScreen[3][3];
  6. vScreen.z = 0;
  7. if(w > 0.01)
  8. {
  9. float inverseWidth = 1 / w;
  10. vScreen.x = (ScreenSize.Width / 2) + (0.5 * ((worldToScreen[0][0] * vOrigin[0] + worldToScreen[0][1] * vOrigin[1] + worldToScreen[0][2] * vOrigin[2] + worldToScreen[0][3]) * inverseWidth) * ScreenSize.Width + 0.5);
  11. vScreen.y = (ScreenSize.Height / 2) - (0.5 * ((worldToScreen[1][0] * vOrigin[0] + worldToScreen[1][1] * vOrigin[1] + worldToScreen[1][2] * vOrigin[2] + worldToScreen[1][3]) * inverseWidth) * ScreenSize.Height + 0.5);
  12. return true;
  13. }
  14. return false;
  15. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement