diff options
Diffstat (limited to '')
-rw-r--r-- | src/modelinfo/ModelInfo.cpp | 18 | ||||
-rw-r--r-- | src/modelinfo/ModelInfo.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/modelinfo/ModelInfo.cpp b/src/modelinfo/ModelInfo.cpp index acc40824..454a73f1 100644 --- a/src/modelinfo/ModelInfo.cpp +++ b/src/modelinfo/ModelInfo.cpp @@ -175,6 +175,23 @@ CModelInfo::IsBoatModel(int32 id) ((CVehicleModelInfo*)GetModelInfo(id))->m_vehicleType == VEHICLE_TYPE_BOAT; } +void +CModelInfo::RemoveColModelsFromOtherLevels(eLevelName level) +{ + int i; + CBaseModelInfo *mi; + CColModel *colmodel; + + for(i = 0; i < MODELINFOSIZE; i++){ + mi = GetModelInfo(i); + if(mi){ + colmodel = mi->GetColModel(); + if(colmodel && colmodel->level != LEVEL_NONE && colmodel->level != level) + colmodel->RemoveCollisionVolumes(); + } + } +} + STARTPATCHES InjectHook(0x50B310, CModelInfo::Initialise, PATCH_JUMP); InjectHook(0x50B5B0, CModelInfo::ShutDown, PATCH_JUMP); @@ -184,4 +201,5 @@ STARTPATCHES InjectHook(0x50BAD0, CModelInfo::AddPedModel, PATCH_JUMP); InjectHook(0x50BA60, CModelInfo::AddVehicleModel, PATCH_JUMP); InjectHook(0x50B860, (CBaseModelInfo *(*)(const char*, int*))CModelInfo::GetModelInfo, PATCH_JUMP); + InjectHook(0x50BBC0, CModelInfo::RemoveColModelsFromOtherLevels, PATCH_JUMP); ENDPATCHES diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h index 30be96ca..d20367d1 100644 --- a/src/modelinfo/ModelInfo.h +++ b/src/modelinfo/ModelInfo.h @@ -36,4 +36,5 @@ public: } static bool IsBoatModel(int32 id); + static void RemoveColModelsFromOtherLevels(eLevelName level); }; |