void CClientPacketRecorder::RecordLocalData(CClientPlayer* pLocalPlayer) { if (m_bRecording && m_szFilename) { // Open our file FILE* pFile = fopen(m_szFilename, "ab+"); if (pFile) { // Write our timestamp if (m_bFrameBased) { long lFrameStamp = m_lFrames - m_lRelative; fwrite(&lFrameStamp, sizeof(long), 1, pFile); } else { long lTimeStamp = CClientTime::GetTime() - m_lRelative; fwrite(&lTimeStamp, sizeof(long), 1, pFile); } // fwrite ( &ulTimeStamp, sizeof ( unsigned long ), 1, pFile ); // Write the packet ID fputc(0xFE, pFile); // Grab the vehicle CClientVehicle* pVehicle = pLocalPlayer->GetOccupiedVehicle(); if (pVehicle) { // Read out the matrix, movespeed and turnspeed CMatrix matVehicle; CVector vecMoveSpeed; CVector vecTurnSpeed; pVehicle->GetMatrix(matVehicle); pVehicle->GetMoveSpeed(vecMoveSpeed); pVehicle->GetTurnSpeed(vecTurnSpeed); float fHealth = pVehicle->GetHealth(); // Write it fwrite(&matVehicle.vRight.fX, sizeof(float), 1, pFile); fwrite(&matVehicle.vRight.fY, sizeof(float), 1, pFile); fwrite(&matVehicle.vRight.fZ, sizeof(float), 1, pFile); fwrite(&matVehicle.vFront.fX, sizeof(float), 1, pFile); fwrite(&matVehicle.vFront.fY, sizeof(float), 1, pFile); fwrite(&matVehicle.vFront.fZ, sizeof(float), 1, pFile); fwrite(&matVehicle.vUp.fX, sizeof(float), 1, pFile); fwrite(&matVehicle.vUp.fY, sizeof(float), 1, pFile); fwrite(&matVehicle.vUp.fZ, sizeof(float), 1, pFile); fwrite(&matVehicle.vPos.fX, sizeof(float), 1, pFile); fwrite(&matVehicle.vPos.fY, sizeof(float), 1, pFile); fwrite(&matVehicle.vPos.fZ, sizeof(float), 1, pFile); fwrite(&vecMoveSpeed.fX, sizeof(float), 1, pFile); fwrite(&vecMoveSpeed.fY, sizeof(float), 1, pFile); fwrite(&vecMoveSpeed.fZ, sizeof(float), 1, pFile); fwrite(&vecTurnSpeed.fX, sizeof(float), 1, pFile); fwrite(&vecTurnSpeed.fY, sizeof(float), 1, pFile); fwrite(&vecTurnSpeed.fZ, sizeof(float), 1, pFile); fwrite(&fHealth, sizeof(float), 1, pFile); // Write the controller state CControllerState cs; g_pGame->GetPad()->GetCurrentControllerState(&cs); fwrite(&cs, sizeof(CControllerState), 1, pFile); } // Close the file fclose(pFile); } } }