@@ -1387,136 +1387,6 @@ void _declspec(naked) HOOK_CVolumetricShadowMgr_Update()
1387
1387
}
1388
1388
}
1389
1389
1390
- struct CStreamingInfo
1391
- {
1392
- DWORD gta_hash;
1393
- WORD chain_next;
1394
- uchar flg;
1395
- uchar archiveId;
1396
- DWORD offsetInBlocks;
1397
- DWORD sizeInBlocks;
1398
- DWORD reqload;
1399
- };
1400
-
1401
- CStreamingInfo* GetStreamingInfoFromModelId ( uint id )
1402
- {
1403
- CStreamingInfo* pItemInfo = (CStreamingInfo*)(0x8E4CC0 );
1404
- return pItemInfo + id;
1405
- }
1406
-
1407
- // ////////////////////////////////////////////////////////////////////////////////////////
1408
- //
1409
- // CAnimManager_CreateAnimAssocGroups
1410
- //
1411
- // A model (usually 7) has to be loaded for this to work
1412
- // Return model id to use
1413
- //
1414
- // ////////////////////////////////////////////////////////////////////////////////////////
1415
- uint OnMY_CAnimManager_CreateAnimAssocGroups ( uint uiModelId )
1416
- {
1417
- CModelInfo* pModelInfo = pGameInterface->GetModelInfo ( uiModelId );
1418
- CBaseModelInfoSAInterface* pModelInfoSAInterface = pModelInfo->GetInterface ();
1419
- bool bIsLoaded = ( pModelInfo->IsLoaded () != 0 );
1420
- bool bHasRwObject = ( pModelInfo->GetInterface ()->pRwObject != NULL );
1421
- int iRefCount = pModelInfo->GetRefCount ();
1422
- unsigned short usNumberOfRefs = pModelInfoSAInterface->usNumberOfRefs ;
1423
- CStreamingInfo* pStreamingInfo = GetStreamingInfoFromModelId ( uiModelId );
1424
-
1425
- if ( !bIsLoaded || !bHasRwObject || pStreamingInfo->reqload != 1 )
1426
- {
1427
- for ( uint i = 0 ; i < 2 ; i++ )
1428
- {
1429
- AddReportLog ( 7440 , SString ( " CAnimManager_CreateAnimAssocGroups: Unexpected id:%d bIsLoaded:%d bHasRwObject:%d iRefCount:%d usNumberOfRefs:%d"
1430
- " gta_hash:%08x chain_next:%04x flg:%02x arch:%d offset:%d size:%d reqload:%d"
1431
- , uiModelId, bIsLoaded, bHasRwObject, iRefCount, usNumberOfRefs
1432
- , pStreamingInfo->gta_hash
1433
- , pStreamingInfo->chain_next
1434
- , pStreamingInfo->flg
1435
- , pStreamingInfo->archiveId
1436
- , pStreamingInfo->offsetInBlocks
1437
- , pStreamingInfo->sizeInBlocks
1438
- , pStreamingInfo->reqload
1439
- ) );
1440
-
1441
- // Change to use model 9
1442
- uiModelId = 9 ;
1443
-
1444
- pModelInfo = pGameInterface->GetModelInfo ( uiModelId );
1445
- pModelInfoSAInterface = pModelInfo->GetInterface ();
1446
- bIsLoaded = ( pModelInfo->IsLoaded () != 0 );
1447
- bHasRwObject = ( pModelInfo->GetInterface ()->pRwObject != NULL );
1448
- iRefCount = pModelInfo->GetRefCount ();
1449
- usNumberOfRefs = pModelInfoSAInterface->usNumberOfRefs ;
1450
- pStreamingInfo = GetStreamingInfoFromModelId ( uiModelId );
1451
-
1452
- pModelInfo->Request ( BLOCKING, " AnimAssocGroups" );
1453
-
1454
- uint uiTimeTaken = 0 ;
1455
- while ( pStreamingInfo->reqload == 2 && uiTimeTaken < 3000 )
1456
- {
1457
- Sleep ( 100 );
1458
- uiTimeTaken += 100 ;
1459
- pGameInterface->GetStreaming ()->LoadAllRequestedModels ( true , " AnimAssocGroups" );
1460
- pGameInterface->GetStreaming ()->LoadAllRequestedModels ( false , " AnimAssocGroups" );
1461
- }
1462
-
1463
- bIsLoaded = ( pModelInfo->IsLoaded () != 0 );
1464
- bHasRwObject = ( pModelInfo->GetInterface ()->pRwObject != NULL );
1465
- iRefCount = pModelInfo->GetRefCount ();
1466
- usNumberOfRefs = pModelInfoSAInterface->usNumberOfRefs ;
1467
- AddReportLog ( 7441 , SString ( " CAnimManager_CreateAnimAssocGroups: Load result id:%d bIsLoaded:%d bHasRwObject:%d iRefCount:%d usNumberOfRefs:%d"
1468
- " gta_hash:%08x chain_next:%04x flg:%02x arch:%d offset:%d size:%d reqload:%d uiTimeTaken:%d"
1469
- , uiModelId, bIsLoaded, bHasRwObject, iRefCount, usNumberOfRefs
1470
- , pStreamingInfo->gta_hash
1471
- , pStreamingInfo->chain_next
1472
- , pStreamingInfo->flg
1473
- , pStreamingInfo->archiveId
1474
- , pStreamingInfo->offsetInBlocks
1475
- , pStreamingInfo->sizeInBlocks
1476
- , pStreamingInfo->reqload
1477
- , uiTimeTaken
1478
- ) );
1479
-
1480
- if ( pStreamingInfo->reqload != 2 )
1481
- break ;
1482
-
1483
- if ( i == 0 )
1484
- {
1485
- // If still loading, remove and retry
1486
- pModelInfo->ModelAddRef ( BLOCKING, " " );
1487
- pModelInfo->RemoveRef ();
1488
- }
1489
- }
1490
- }
1491
-
1492
- return uiModelId;
1493
- }
1494
-
1495
-
1496
- // Hook info
1497
- #define HOOKPOS_CAnimManager_CreateAnimAssocGroups 0x4D3D52
1498
- #define HOOKSIZE_CAnimManager_CreateAnimAssocGroups 5
1499
- #define HOOKCHECK_CAnimManager_CreateAnimAssocGroups 0x8B
1500
- DWORD RETURN_CAnimManager_CreateAnimAssocGroups = 0x4D3D59 ;
1501
- void _declspec (naked) HOOK_CAnimManager_CreateAnimAssocGroups ()
1502
- {
1503
- _asm
1504
- {
1505
- pushad
1506
- push eax
1507
- call OnMY_CAnimManager_CreateAnimAssocGroups
1508
- mov [esp+0 ], eax // Put result temp
1509
- add esp, 4 *1
1510
- popad
1511
-
1512
- mov eax, [esp-32 -4 *1 ] // Get result temp
1513
-
1514
- // Replaced code
1515
- mov eax, 0x0A9B0C8 [eax*4 ]
1516
- jmp RETURN_CAnimManager_CreateAnimAssocGroups
1517
- }
1518
- }
1519
-
1520
1390
1521
1391
// ////////////////////////////////////////////////////////////////////////////////////////
1522
1392
//
0 commit comments