03-18-2010, 04:28 AM
|
#13 |
Super l337   Join Date: Mar 2010
Posts: 219
Reputation: 17406 Rep Power: 202 Points: 11,060, Level: 13 | | screen matrix: 0x3B0
SIG: (0x3A0 add matrixes base 0x10 = 0x3B0)
so final w2s PHP Code: class CRendererPtr { public: CRenderer* Ptr; //0x0000 };
class CRenderer { public: char unknown0[32]; //0x0000 float fovx; //0x0020 float fovy; //0x0024 float a; //0x0028 float zn; //0x002C float zf; //0x0030 float aspect; //0x0034 char unknown56[40]; //0x0038 float view; //0x0060 char unknown100[844]; //0x0064 float screen; //0x03B0 };
CRendererPtr *m_Render = 0x1534540
bool CBF::ScreenProjectPoint(const Vector &in, PINT out) { const _MATRIX &m_Screen = *(_MATRIX *) &gEngine.m_Render->Ptr->screen;
Vector Origin = Vector(in.x, in.z, in.y); // backward set to XZY
FLOAT w = m_Screen.m [0][3] * Origin.x + m_Screen.m [1][3] * Origin.y + m_Screen.m [2][3] * Origin.z + m_Screen.m [3][3];
if(w < 0.0001f) return FALSE;
FLOAT x = m_Screen.m [0][0] * Origin.x + m_Screen.m [1][0] * Origin.y + m_Screen.m [2][0] * Origin.z + m_Screen.m [3][0];
FLOAT y = m_Screen.m [0][1] * Origin.x + m_Screen.m [1][1] * Origin.y + m_Screen.m [2][1] * Origin.z + m_Screen.m [3][1];
out[0] = g_Interface->Screen.CenterX.f + g_Interface->Screen.CenterX.f * x / w; out[1] = g_Interface->Screen.CenterY.f - g_Interface->Screen.CenterY.f * y / w;
return TRUE; }
[Auto Merged - 3:30:10 UTC] Quote: |
220 and 3A0 are used in the engine calculation.
|  |
dogmatt is online now | |