|
12 | 12 | #include "..\game_sa\gamesa_renderware.h" |
13 | 13 |
|
14 | 14 | #define FUNC_CVehicleModelInfo_ResetColors 0x4C8490 |
15 | | -static RwTexture** ms_aDirtTextures = (RwTexture**)0xC02BD0; |
| 15 | +#define FUNC_CBaseModelInfo_Shutdown 0x4C4D50 |
| 16 | +#define IN_PLACE_BUFFER_DIRT_SIZE 30 |
| 17 | + |
| 18 | +static RwTexture** const ms_aDirtTextures = (RwTexture**)0xC02BD0; |
16 | 19 |
|
17 | 20 | static bool __fastcall AreVehicleDoorsUndamageable(CVehicleSAInterface* vehicle) |
18 | 21 | { |
@@ -122,16 +125,15 @@ static void CVehicleModelInfo_Shutdown() |
122 | 125 | if (!mi) |
123 | 126 | return; |
124 | 127 |
|
125 | | - // Call CBaseModelInfo::Shutdown |
126 | | - ((void(__cdecl*)(void*))0x4C4D50)(mi); |
| 128 | + ((void(__cdecl*)(void*))FUNC_CBaseModelInfo_Shutdown)(mi); |
127 | 129 |
|
128 | 130 | delete[] mi->m_dirtMaterials; |
129 | 131 | mi->m_dirtMaterials = nullptr; |
130 | 132 | } |
131 | 133 |
|
132 | 134 | static void SetDirtTextures(CVehicleModelInfoSAInterface* mi, std::uint32_t level) |
133 | 135 | { |
134 | | - RpMaterial** materials = mi->m_numDirtMaterials > 30 ? mi->m_dirtMaterials : mi->m_staticDirtMaterials; |
| 136 | + RpMaterial** materials = mi->m_numDirtMaterials > IN_PLACE_BUFFER_DIRT_SIZE ? mi->m_dirtMaterials : mi->m_staticDirtMaterials; |
135 | 137 | for (std::uint32_t i = 0; i < mi->m_numDirtMaterials; i++) |
136 | 138 | RpMaterialSetTexture(materials[i], ms_aDirtTextures[level]); |
137 | 139 | } |
@@ -182,7 +184,7 @@ static void __fastcall FindEditableMaterialList(CVehicleModelInfoSAInterface* mi |
182 | 184 | GetEditableMaterialListCB(mi->pVisualInfo->m_pExtra[i], &list); |
183 | 185 |
|
184 | 186 | mi->m_numDirtMaterials = list.size(); |
185 | | - if (mi->m_numDirtMaterials > 30) |
| 187 | + if (mi->m_numDirtMaterials > IN_PLACE_BUFFER_DIRT_SIZE) |
186 | 188 | { |
187 | 189 | mi->m_dirtMaterials = new RpMaterial*[mi->m_numDirtMaterials]; |
188 | 190 | std::copy(list.begin(), list.end(), mi->m_dirtMaterials); |
|
0 commit comments