- class Transformations;
- class TransData;
- class Transformations //CE045C
- {
- public:
- char unknown0[144]; //0x0000
- TransData* pTran; //0x0090
- };
- class TransData
- {
- public:
- char unknown0[4]; //0x0000
- D3DXVECTOR3 InvView_right; //0x0004
- D3DXVECTOR3 InvView_up; //0x0010
- D3DXVECTOR3 InvView_forward; //0x001C
- D3DXVECTOR3 InvView_Translation; //0x0028
- D3DXVECTOR2 pad; //0x0034 (x = 1,y = -1)
- //http://msdn.microsoft.com/en-us/library/aa915188.aspx
- D3DXVECTOR3 ViewPortMatrix1; //0x003C (x= viewPort.Width/2)
- D3DXVECTOR3 ViewPortMatrix2; //0x0048 -(y= viewPort.Height/2)
- D3DXVECTOR3 ViewPortMatrix3; //0x0054(x=viewPort.X + CenterScreenX,y=viewPort.Y + CenterScreenY,z=viewPort.MinZ)
- D3DXVECTOR3 ViewPortMatrix_unk; //not sure
- D3DXVECTOR3 ProjO1;//proj1.x 0x006C
- D3DXVECTOR3 ProjO2;//proj2.y 0x0078
- D3DXVECTOR3 ProjO3;//proj3.z 0x0084 =1.0001
- D3DXVECTOR3 ProjO4;//proj4.z 0x0090
- D3DXVECTOR3 Proj1;//proj1.x 0x009C
- D3DXVECTOR3 Proj2;//proj2.y 0x00A8
- D3DXVECTOR3 Proj3;//proj3.z 0x00B4 = 1.0
- D3DXVECTOR3 Proj4;//proj4.z 0x00C0
- D3DXVECTOR3 ProjD1;// 0x00CC x = 1/Proj._11
- D3DXVECTOR3 ProjD2;// 0x00D8 y = 1/Proj._22
- D3DXVECTOR3 ProjD3;// 0x00E4 z= 1
- D3DXVECTOR3 ProjD4;// 0x00F0
- D3DXVECTOR2 pad1; //.x bigass float 0x00FC
- D3DXVECTOR3 View_right; //0x0104 not the view
- D3DXVECTOR3 View_up; //0x0110
- D3DXVECTOR3 View_forward; //0x011C
- D3DXVECTOR3 View_Translation; //0x0128
- };
- D3DXVECTOR3 W2SN(TransData* p, D3DXVECTOR3 in)
- {
- D3DXVECTOR3 out,temp;
- ::D3DXVec3Subtract(&temp,&in,&p->InvView_Translation);
- float x = ::D3DXVec3Dot(&temp,&p->InvView_right);
- float y = ::D3DXVec3Dot(&temp,&p->InvView_up);
- float z = ::D3DXVec3Dot(&temp,&p->InvView_forward);
- out.x = p->ViewPortMatrix3.x * (1+(x / p->ProjD1.x / z));
- out.y = p->ViewPortMatrix3.y * (1-(y / p->ProjD2.y / z));
- out.z = z;
- return out;
- }