Mercurial > mm7
comparison Render.cpp @ 1997:157fd2831567
DrawIndoorSky() continue
author | Ritor1 |
---|---|
date | Sun, 03 Nov 2013 22:42:25 +0600 |
parents | ef4dcee1b4a1 |
children | 079f2abf54e4 |
comparison
equal
deleted
inserted
replaced
1989:33787c8938a5 | 1997:157fd2831567 |
---|---|
5058 void *v79; // [sp+168h] [bp-Ch]@9 | 5058 void *v79; // [sp+168h] [bp-Ch]@9 |
5059 float v80; // [sp+16Ch] [bp-8h]@3 | 5059 float v80; // [sp+16Ch] [bp-8h]@3 |
5060 const void *v81; // [sp+170h] [bp-4h]@7 | 5060 const void *v81; // [sp+170h] [bp-4h]@7 |
5061 | 5061 |
5062 pFace = &pIndoor->pFaces[uFaceID]; | 5062 pFace = &pIndoor->pFaces[uFaceID]; |
5063 //for floor and wall------------------- | 5063 //for floor and wall(for example Selesta)------------------- |
5064 if (pFace->uPolygonType == POLYGON_InBetweenFloorAndWall || pFace->uPolygonType == POLYGON_Floor) | 5064 if (pFace->uPolygonType == POLYGON_InBetweenFloorAndWall || pFace->uPolygonType == POLYGON_Floor) |
5065 { | 5065 { |
5066 int v69 = (GetTickCount() / 32) - pGame->pIndoorCameraD3D->vPartyPos.x; | 5066 int v69 = (GetTickCount() / 32) - pGame->pIndoorCameraD3D->vPartyPos.x; |
5067 int v55 = (GetTickCount() / 32) + pGame->pIndoorCameraD3D->vPartyPos.y; | 5067 int v55 = (GetTickCount() / 32) + pGame->pIndoorCameraD3D->vPartyPos.y; |
5068 for (uint i = 0; i < uNumVertices; ++i) | 5068 for (uint i = 0; i < uNumVertices; ++i) |
5114 v66 = 224 * pMiscTimer->uTotalGameTimeElapsed & v12; | 5114 v66 = 224 * pMiscTimer->uTotalGameTimeElapsed & v12; |
5115 v78 = 0; | 5115 v78 = 0; |
5116 v81 = 0; | 5116 v81 = 0; |
5117 float v68 = 1.0 / (double)pSkyPolygon.pTexture->uTextureHeight; | 5117 float v68 = 1.0 / (double)pSkyPolygon.pTexture->uTextureHeight; |
5118 if ( (signed int)pSkyPolygon.uNumVertices <= 0 ) | 5118 if ( (signed int)pSkyPolygon.uNumVertices <= 0 ) |
5119 { | |
5120 pRenderer->DrawIndoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, | |
5121 pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | |
5122 return; | 5119 return; |
5123 } | |
5124 | 5120 |
5125 //v14 = (char *)&array_507D30[0].vWorldViewProjY; | 5121 //v14 = (char *)&array_507D30[0].vWorldViewProjY; |
5126 int _507D30_idx = 0; | 5122 int _507D30_idx = 0; |
5127 while ( 2 ) | 5123 while ( 2 ) |
5128 { | 5124 { |
5131 v74 = v77 + pSkyPolygon.ptr_38->angle_from_north; | 5127 v74 = v77 + pSkyPolygon.ptr_38->angle_from_north; |
5132 | 5128 |
5133 v77 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_north_south * (signed __int64)(v72 * (v70 - array_507D30[_507D30_idx].vWorldViewProjY))) >> 16; | 5129 v77 = (unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_north_south * (signed __int64)(v72 * (v70 - array_507D30[_507D30_idx].vWorldViewProjY))) >> 16; |
5134 v75 = (RenderVertexSoft *)(v77 + pSkyPolygon.ptr_38->angle_from_east); | 5130 v75 = (RenderVertexSoft *)(v77 + pSkyPolygon.ptr_38->angle_from_east); |
5135 | 5131 |
5136 v79 = (void *)(((unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)v72 * (v70 - array_507D30[_507D30_idx].vWorldViewProjY))) >> 16); | 5132 v79 = (void *)(((unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)v72 * (v70 - (int)array_507D30[_507D30_idx].vWorldViewProjY))) >> 16); |
5137 v17 = v72 * (pBLVRenderParams->uViewportCenterX - (int)array_507D30[_507D30_idx].vWorldViewProjX); | 5133 v17 = v72 * (pBLVRenderParams->uViewportCenterX - (int)array_507D30[_507D30_idx].vWorldViewProjX); |
5138 v18 = array_507D30[_507D30_idx].vWorldViewProjY - 1.0; | 5134 v18 = array_507D30[_507D30_idx].vWorldViewProjY - 1.0; |
5139 v19 = -pSkyPolygon.field_24; | 5135 v19 = -pSkyPolygon.field_24; |
5140 v77 = -pSkyPolygon.field_24; | 5136 v77 = -pSkyPolygon.field_24; |
5141 X = (int)((char *)v79 + pSkyPolygon.v_18.x); | 5137 X = (int)((char *)v79 + pSkyPolygon.v_18.x); |
5163 } | 5159 } |
5164 if ( !v78 ) | 5160 if ( !v78 ) |
5165 { | 5161 { |
5166 LODWORD(v23) = v77 << 16; | 5162 LODWORD(v23) = v77 << 16; |
5167 HIDWORD(v23) = v77 >> 16;//v23 = 0xfffffe0000000000 | 5163 HIDWORD(v23) = v77 >> 16;//v23 = 0xfffffe0000000000 |
5168 int i = HIDWORD(v23) / X; | 5164 v79 = (void *)(v23 / X);//X = FFFF9014(-28652) |
5169 v79 = (void *)(v23 / X);//X = FFFF96A3(FFFF9014) | |
5170 v77 = v17; | 5165 v77 = v17; |
5171 v77 = v17; | |
5172 | |
5173 LODWORD(v76) = v74 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)v17) >> 16); | 5166 LODWORD(v76) = v74 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)v17) >> 16); |
5174 LODWORD(v80) = v66 + ((signed int)((unsigned __int64)(SLODWORD(v76) * v23 / X) >> 16) >> 4); | 5167 LODWORD(v80) = v66 + ((signed int)((unsigned __int64)(SLODWORD(v76) * v23 / X) >> 16) >> 4); |
5175 //v24 = (double)SLODWORD(v80) * 0.000015259022; | 5168 //v24 = (double)SLODWORD(v80) * 0.000015259022; |
5176 array_507D30[_507D30_idx].u = ((double)SLODWORD(v80) * 0.000015259022) * (1.0 / (double)pSkyPolygon.pTexture->uTextureWidth); | 5169 array_507D30[_507D30_idx].u = ((double)SLODWORD(v80) * 0.000015259022) * (1.0 / (double)pSkyPolygon.pTexture->uTextureWidth); |
5177 | 5170 |
5184 //v14 += 48; | 5177 //v14 += 48; |
5185 v81 = (char *)v81 + 1; | 5178 v81 = (char *)v81 + 1; |
5186 //v26 = __OFSUB__((int)v81, pSkyPolygon.uNumVertices); | 5179 //v26 = __OFSUB__((int)v81, pSkyPolygon.uNumVertices); |
5187 //v25 = (signed int)((char *)v81 - pSkyPolygon.uNumVertices) < 0; | 5180 //v25 = (signed int)((char *)v81 - pSkyPolygon.uNumVertices) < 0; |
5188 array_507D30[_507D30_idx]._rhw = 65536.0 / (double)(signed int)v79; | 5181 array_507D30[_507D30_idx]._rhw = 65536.0 / (double)(signed int)v79; |
5189 /* | |
5190 v18 = v17 / v38; | |
5191 if ( v18 < 0 ) | |
5192 v18 = pODMRenderParams->shading_dist_mist; | |
5193 | |
5194 v37 = v35 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)v13) >> 16); | |
5195 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed + ((signed int)((unsigned __int64)(v37 * (signed __int64)v18) >> 16) >> 3); | |
5196 array_50AC10[i].u = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureWidth * 65536.0); | |
5197 | |
5198 v36 = v36 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_south * (signed __int64)v13) >> 16); | |
5199 v35 = 224 * pMiscTimer->uTotalGameTimeElapsed + ((signed int)((unsigned __int64)(v36 * (signed __int64)v18) >> 16) >> 3); | |
5200 array_50AC10[i].v = (double)v35 / ((double)pSkyPolygon.pTexture->uTextureHeight * 65536.0); | |
5201 | |
5202 array_50AC10[i].vWorldViewPosition.x = (double)0x2000;//pODMRenderParams->shading_dist_mist | |
5203 array_50AC10[i]._rhw = 1.0 / (double)(v18 >> 16); | |
5204 */ | |
5205 _507D30_idx++; | 5182 _507D30_idx++; |
5206 if ( (int)v81 >= pSkyPolygon.uNumVertices ) | 5183 if ( (int)v81 >= pSkyPolygon.uNumVertices ) |
5207 { | 5184 { |
5208 pRenderer->DrawIndoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, | 5185 pRenderer->DrawIndoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, |
5209 pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | 5186 pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); |
5211 } | 5188 } |
5212 continue; | 5189 continue; |
5213 } | 5190 } |
5214 break; | 5191 break; |
5215 } | 5192 } |
5193 | |
5216 LODWORD(v73) = 0; | 5194 LODWORD(v73) = 0; |
5217 v80 = v76; | 5195 v80 = v76; |
5218 if ( (signed int)pSkyPolygon.uNumVertices > 0 ) | 5196 if ( (signed int)pSkyPolygon.uNumVertices > 0 ) |
5219 { | 5197 { |
5220 v28 = (double)SLODWORD(v76); | 5198 v28 = (double)SLODWORD(v76); |
5221 LODWORD(v76) = (int)(char *)array_50AC10 + 28; | 5199 LODWORD(v76) = (int)(char *)array_50AC10 + 28; |
5222 v29 = (char *)&array_50AC10[0].vWorldViewProjX; | 5200 uint i = 0; |
5223 v30 = (char *)&array_507D30[1].vWorldViewProjY; | 5201 for ( v78 = pSkyPolygon.uNumVertices; v78; --v78 ) |
5224 v79 = array_50AC10; | 5202 { |
5225 v81 = array_507D30; | |
5226 v78 = pSkyPolygon.uNumVertices; | |
5227 do | |
5228 { | |
5229 v31 = v28 < *((float *)v30 - 12); | |
5230 v32 = v28 == *((float *)v30 - 12); | |
5231 ++LODWORD(v73); | 5203 ++LODWORD(v73); |
5232 memcpy(v79, v81, 0x30u); | 5204 memcpy(&array_50AC10[i], &array_507D30[i], 0x30u); |
5233 v79 = (char *)v79 + 48; | |
5234 LODWORD(v76) += 48; | 5205 LODWORD(v76) += 48; |
5235 v29 += 48; | 5206 if ( v28 < array_507D30[i].vWorldViewProjY | v28 == array_507D30[i].vWorldViewProjY |
5236 if ( v31 | v32 || v28 >= *(float *)v30 ) | 5207 || v28 >= array_507D30[i + 1].vWorldViewProjY ) |
5237 { | 5208 { |
5238 if ( v28 >= *((float *)v30 - 12) || v28 <= *(float *)v30 ) | 5209 if ( v28 >= array_507D30[i].vWorldViewProjY || v28 <= array_507D30[i + 1].vWorldViewProjY ) |
5239 goto LABEL_28; | 5210 { |
5240 v33 = (*((float *)v30 - 1) - *((float *)v30 - 13)) * v28 / (*(float *)v30 - *((float *)v30 - 12)) | 5211 i++; |
5241 + *((float *)v30 - 1); | 5212 continue; |
5213 } | |
5214 v33 = (array_507D30[i + 1].vWorldViewProjX - array_507D30[i].vWorldViewProjX) * v28 / (array_507D30[i + 1].vWorldViewProjY - array_507D30[i].vWorldViewProjY) | |
5215 + array_507D30[i + 1].vWorldViewProjX; | |
5242 } | 5216 } |
5243 else | 5217 else |
5244 { | 5218 { |
5245 v33 = (*((float *)v30 - 13) - *((float *)v30 - 1)) * v28 / (*((float *)v30 - 12) - *(float *)v30) | 5219 v33 = (array_507D30[i].vWorldViewProjX - array_507D30[i + 1].vWorldViewProjX) * v28 / (array_507D30[i].vWorldViewProjY - array_507D30[i + 1].vWorldViewProjY) |
5246 + *((float *)v30 - 13); | 5220 + array_507D30[i].vWorldViewProjX; |
5247 } | 5221 } |
5248 *(float *)v29 = v33; | 5222 array_50AC10[i + 1].vWorldViewProjX = v33; |
5249 v79 = (char *)v79 + 48; | |
5250 v29 += 48; | |
5251 ++LODWORD(v73); | 5223 ++LODWORD(v73); |
5252 *(unsigned int *)LODWORD(v76) = v28; | 5224 *(unsigned int *)LODWORD(v76) = v28; |
5253 LODWORD(v76) += 48; | 5225 LODWORD(v76) += 48; |
5254 LABEL_28: | 5226 i++; |
5255 v81 = (char *)v81 + 48; | 5227 } |
5256 v30 += 48; | |
5257 --v78; | |
5258 } | |
5259 while ( v78 ); | |
5260 } | 5228 } |
5261 if ( SLODWORD(v73) <= 0 ) | 5229 if ( SLODWORD(v73) <= 0 ) |
5262 goto LABEL_40; | 5230 goto LABEL_40; |
5263 v34 = (char *)&array_50AC10[0].vWorldViewProjY; | 5231 //v34 = (char *)&array_50AC10[0].vWorldViewProjY; |
5232 uint j = 0; | |
5264 v65 = v77 >> 14; | 5233 v65 = v77 >> 14; |
5265 HIDWORD(v69) = LODWORD(v73); | 5234 //HIDWORD(v69) = LODWORD(v73); |
5266 do | 5235 for ( int t = (int)LODWORD(v73); t > 1; t-- ) |
5267 { | 5236 { |
5268 v35 = (const void *)(v72 * (v70 - (unsigned __int64)(signed __int64)*(float *)v34)); | 5237 v35 = (const void *)(v72 * (v70 - (unsigned __int64)(signed __int64)array_50AC10[j].vWorldViewProjY)); |
5269 v78 = pSkyPolygon.ptr_38->viewing_angle_from_west_east; | 5238 |
5270 v81 = (const void *)((unsigned __int64)(v78 * (signed __int64)(signed int)v35) >> 16); | 5239 //v78 = pSkyPolygon.ptr_38->viewing_angle_from_west_east; |
5240 v81 = (const void *)((unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_west_east * (signed __int64)(signed int)v35) >> 16); | |
5271 v36 = (int)((char *)v81 + pSkyPolygon.ptr_38->angle_from_north); | 5241 v36 = (int)((char *)v81 + pSkyPolygon.ptr_38->angle_from_north); |
5242 | |
5272 v81 = v35; | 5243 v81 = v35; |
5273 v74 = v36; | 5244 v74 = v36; |
5274 v78 = pSkyPolygon.ptr_38->viewing_angle_from_north_south; | 5245 //v78 = pSkyPolygon.ptr_38->viewing_angle_from_north_south; |
5275 v81 = (const void *)((unsigned __int64)(v78 * (signed __int64)(signed int)v35) >> 16); | 5246 v81 = (const void *)((unsigned __int64)(pSkyPolygon.ptr_38->viewing_angle_from_north_south * (signed __int64)(signed int)v35) >> 16); |
5276 v78 = (int)v35; | 5247 v78 = (int)v35; |
5277 v75 = (RenderVertexSoft *)((char *)v81 + pSkyPolygon.ptr_38->angle_from_east); | 5248 v75 = (RenderVertexSoft *)((char *)v81 + pSkyPolygon.ptr_38->angle_from_east); |
5278 v81 = (const void *)pSkyPolygon.v_18.z; | 5249 v81 = (const void *)pSkyPolygon.v_18.z; |
5279 v78 = (unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)(signed int)v35) >> 16; | 5250 v78 = (unsigned __int64)(pSkyPolygon.v_18.z * (signed __int64)(signed int)v35) >> 16; |
5280 v37 = (const void *)(v72 | 5251 v37 = (const void *)(v72 |
5281 * (pBLVRenderParams->uViewportCenterX - (unsigned __int64)(signed __int64)*((float *)v34 - 1))); | 5252 * (pBLVRenderParams->uViewportCenterX - (unsigned __int64)(signed __int64)array_50AC10[j].vWorldViewProjX)); |
5282 v38 = (signed __int64)(*(float *)v34 - 1.0); | 5253 v38 = (signed __int64)(array_50AC10[j].vWorldViewProjY - 1.0); |
5283 v81 = 0; | 5254 v81 = 0; |
5284 LODWORD(v76) = v38; | 5255 LODWORD(v76) = v38; |
5285 v39 = v72 * (v70 - v38); | 5256 v39 = v72 * (v70 - v38); |
5286 while ( 1 ) | 5257 while ( 1 ) |
5287 { | 5258 { |
5307 v79 = (void *)pSkyPolygon.v_18.z; | 5278 v79 = (void *)pSkyPolygon.v_18.z; |
5308 v78 = 2 * LODWORD(v76); | 5279 v78 = 2 * LODWORD(v76); |
5309 v81 = (const void *)((unsigned __int64)(pSkyPolygon.v_18.z | 5280 v81 = (const void *)((unsigned __int64)(pSkyPolygon.v_18.z |
5310 * (signed __int64)(signed int)(signed __int64)(((double)v70 | 5281 * (signed __int64)(signed int)(signed __int64)(((double)v70 |
5311 - ((double)(2 * LODWORD(v76)) | 5282 - ((double)(2 * LODWORD(v76)) |
5312 - *(float *)v34)) | 5283 - array_50AC10[j].vWorldViewProjY)) |
5313 * (double)v72)) >> 16); | 5284 * (double)v72)) >> 16); |
5314 X = (int)((char *)v81 + pSkyPolygon.v_18.x); | 5285 X = (int)((char *)v81 + pSkyPolygon.v_18.x); |
5315 } | 5286 } |
5316 LODWORD(v42) = v77 << 16; | 5287 LODWORD(v42) = v77 << 16; |
5317 HIDWORD(v42) = v77 >> 16; | 5288 HIDWORD(v42) = v77 >> 16; |
5318 v79 = (void *)(v42 / X); | 5289 v79 = (void *)(v42 / X); |
5319 v81 = v37; | 5290 v81 = v37; |
5320 v78 = pSkyPolygon.ptr_38->angle_from_west; | 5291 |
5321 v81 = (const void *)((unsigned __int64)(v78 * (signed __int64)(signed int)v37) >> 16); | 5292 //v78 = pSkyPolygon.ptr_38->angle_from_west; |
5322 v43 = v74 + ((unsigned __int64)(v78 * (signed __int64)(signed int)v37) >> 16); | 5293 v81 = (const void *)((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)(signed int)v37) >> 16); |
5294 v43 = v74 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_west * (signed __int64)(signed int)v37) >> 16); | |
5323 v74 = (unsigned int)v37; | 5295 v74 = (unsigned int)v37; |
5324 LODWORD(v76) = v43; | 5296 LODWORD(v76) = v43; |
5325 v78 = pSkyPolygon.ptr_38->angle_from_south; | 5297 |
5326 v75 = (RenderVertexSoft *)((char *)v75 + ((unsigned __int64)(v78 * (signed __int64)(signed int)v37) >> 16)); | 5298 //v78 = pSkyPolygon.ptr_38->angle_from_south; |
5299 v75 = (RenderVertexSoft *)((char *)v75 + ((unsigned __int64)(pSkyPolygon.ptr_38->angle_from_south * (signed __int64)(signed int)v37) >> 16)); | |
5327 v74 = (unsigned __int64)(v43 * v42 / X) >> 16; | 5300 v74 = (unsigned __int64)(v43 * v42 / X) >> 16; |
5328 v81 = (const void *)((unsigned __int64)((signed int)v75 * v42 / X) >> 16); | 5301 v81 = (const void *)((unsigned __int64)((signed int)v75 * v42 / X) >> 16); |
5329 v34 += 48; | 5302 |
5303 //v34 += 48; | |
5330 v78 = v66 + ((signed int)v74 >> 4); | 5304 v78 = v66 + ((signed int)v74 >> 4); |
5331 v44 = HIDWORD(v69)-- == 1; | 5305 //v44 = HIDWORD(v69)-- == 1; |
5332 v45 = (double)v78 * 0.000015259022; | 5306 v45 = (double)v78 * 0.000015259022; |
5333 v78 = v63 + ((signed int)((unsigned __int64)((signed int)v75 * v42 / X) >> 16) >> 4); | 5307 v78 = v63 + ((signed int)((unsigned __int64)((signed int)v75 * v42 / X) >> 16) >> 4); |
5334 *((float *)v34 - 10) = v45 * (1.0 / (double)pSkyPolygon.pTexture->uTextureWidth); | 5308 array_50AC10[j].u = v45 * (1.0 / (double)pSkyPolygon.pTexture->uTextureWidth); |
5335 *((float *)v34 - 9) = (double)v78 * 0.000015259022 * v68; | 5309 array_50AC10[j].v = (double)v78 * 0.000015259022 * v68; |
5336 v46 = (double)(signed int)v79; | 5310 //v46 = (double)(signed int)v79; |
5337 *((float *)v34 - 16) = 0.000015258789 * v46; | 5311 array_50AC10[j].vWorldViewPosition.x = 0.000015258789 * (double)(signed int)v79; |
5338 *((float *)v34 - 11) = 65536.0 / v46; | 5312 array_50AC10[j]._rhw = 65536.0 / (double)(signed int)v79; |
5339 } | 5313 ++j; |
5340 while ( !v44 ); | 5314 } |
5315 //while ( !v44 ); | |
5341 LABEL_40: | 5316 LABEL_40: |
5342 v47 = 0; | 5317 uint i = 0; |
5343 if ( SLODWORD(v73) > 0 ) | 5318 if ( SLODWORD(v73) > 0 ) |
5344 { | 5319 { |
5345 v48 = (double)SLODWORD(v80); | 5320 v48 = (double)SLODWORD(v80); |
5346 v75 = array_507D30; | 5321 for ( HIDWORD(v69) = LODWORD(v73); HIDWORD(v69); --HIDWORD(v69) ) |
5347 v49 = array_50AC10; | 5322 { |
5348 HIDWORD(v69) = LODWORD(v73); | 5323 if ( v48 >= array_50AC10[i].vWorldViewProjY ) |
5349 do | 5324 { |
5350 { | 5325 ++i; |
5351 if ( v48 >= v49->vWorldViewProjY ) | 5326 memcpy(&array_507D30[i], &array_50AC10[i], 0x30u); |
5352 { | 5327 } |
5353 v50 = v75; | 5328 } |
5354 ++v47; | 5329 } |
5355 ++v75; | 5330 pSkyPolygon.uNumVertices = i; |
5356 memcpy(v50, v49, 0x30u); | 5331 pRenderer->DrawIndoorSkyPolygon(pSkyPolygon.uNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); |
5357 } | 5332 int pNumVertices = 0; |
5358 ++v49; | |
5359 --HIDWORD(v69); | |
5360 } | |
5361 while ( HIDWORD(v69) ); | |
5362 } | |
5363 pSkyPolygon.uNumVertices = v47; | |
5364 pRenderer->DrawIndoorSkyPolygon(v47, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | |
5365 *(float *)&v74 = 0.0; | |
5366 if ( SLODWORD(v73) > 0 ) | 5333 if ( SLODWORD(v73) > 0 ) |
5367 { | 5334 { |
5368 v51 = (double)SLODWORD(v80); | 5335 v51 = (double)SLODWORD(v80); |
5369 v75 = array_507D30; | 5336 for ( v80 = v73; v80 != 0.0; --LODWORD(v80) ) |
5370 v52 = array_50AC10; | 5337 { |
5371 for ( v80 = v73; v80; --v80 ) | 5338 if ( v51 <= array_50AC10[pNumVertices].vWorldViewProjY ) |
5372 { | 5339 { |
5373 if ( v51 <= v52->vWorldViewProjY ) | 5340 ++pNumVertices; |
5374 { | 5341 memcpy(&array_507D30[pNumVertices], &array_50AC10[pNumVertices], 0x30u); |
5375 v53 = v75; | 5342 } |
5376 ++v74; | 5343 } |
5377 ++v75; | 5344 } |
5378 memcpy(v53, v52, 0x30u); | 5345 pRenderer->DrawIndoorSkyPolygon(pNumVertices, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); |
5379 } | |
5380 ++v52; | |
5381 //--LODWORD(v80); | |
5382 } | |
5383 //while ( v80 != 0.0 ); | |
5384 } | |
5385 pRenderer->DrawIndoorSkyPolygon(v74, &pSkyPolygon, pBitmaps_LOD->pHardwareTextures[(signed __int16)pSkyPolygon.uTileBitmapID]); | |
5386 } | 5346 } |
5387 | 5347 |
5388 | 5348 |
5389 //----- (004A2FC0) -------------------------------------------------------- | 5349 //----- (004A2FC0) -------------------------------------------------------- |
5390 void Render::DrawIndoorPolygon(unsigned int uNumVertices, BLVFace *pFace, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8) | 5350 void Render::DrawIndoorPolygon(unsigned int uNumVertices, BLVFace *pFace, IDirect3DTexture2 *pHwTex, Texture *pTex, int uPackedID, unsigned int uColor, int a8) |