Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  123
Language: C/C++
Code:
struct matrix4x4
{
     float m[12];
};
 
BOOLEAN GetBonePosition(DWORD64 pSkeleton, DWORD64 pVisual, DWORD index, VEC3* out)
{
     DWORD64 animClass = ReadMemory<DWORD64>(pSkeleton + 0xA0);
     if (!ISVALID(animClass)) return FALSE;
                
        //This is how the game does it, but it's not needed
     //DWORD realindex = ReadMemory<DWORD>(animClass + 0x7E4 + index * 4);
     //if (realindex == 0xFFFFFFFF) return FALSE;
 
     DWORD64 matrixClass = ReadMemory<DWORD64>(animClass + 0xBF0);
     if (!ISVALID(matrixClass)) return FALSE;
 
     matrix4x4 matrix_a = ReadMemory<matrix4x4>(pVisual + 0x8);
     VEC3 matrix_b = ReadMemory<VEC3>(matrixClass + 0x54 + index /*realIndex*/ * sizeof(matrix4x4)); //Only the last 3 of matrix needed
 
     out->x = (matrix_a.m[0] * matrix_b.x) + (matrix_a.m[3] * matrix_b.y) + (matrix_a.m[6] * matrix_b.z) + matrix_a.m[9];
     out->y = (matrix_a.m[1] * matrix_b.x) + (matrix_a.m[4] * matrix_b.y) + (matrix_a.m[7] * matrix_b.z) + matrix_a.m[10];
     out->z = (matrix_a.m[2] * matrix_b.x) + (matrix_a.m[5] * matrix_b.y) + (matrix_a.m[8] * matrix_b.z) + matrix_a.m[11];
     return TRUE;
}
Comments: