Mercurial > mm7
comparison Indoor.cpp @ 1291:1577d75db258
m
author | Ritor1 |
---|---|
date | Fri, 14 Jun 2013 16:06:20 +0600 |
parents | 6c55c6bd67e0 |
children | 24bc24b64ec2 |
comparison
equal
deleted
inserted
replaced
1290:93911045d8f1 | 1291:1577d75db258 |
---|---|
345 { | 345 { |
346 BspRenderer_stru0 *pNode = &pBspRenderer->nodes[i]; | 346 BspRenderer_stru0 *pNode = &pBspRenderer->nodes[i]; |
347 v4 = pRenderer->uTargetSurfacePitch * pNode->field_C._viewport_space_y; | 347 v4 = pRenderer->uTargetSurfacePitch * pNode->field_C._viewport_space_y; |
348 if ( pNode->field_C._viewport_space_y <= pNode->field_C._viewport_space_w ) | 348 if ( pNode->field_C._viewport_space_y <= pNode->field_C._viewport_space_w ) |
349 { | 349 { |
350 //v5 = (char *)&pBspRenderer->nodes[0].field_C.array_3D8[pNode->field_C._viewport_space_y + v7]; | 350 //v5 = (char *)&pBspRenderer->nodes[0].field_C.viewport_right_side[pNode->field_C._viewport_space_y + v7]; |
351 v5 = &pNode->field_C.array_3D8[pNode->field_C._viewport_space_y]; | 351 v5 = &pNode->field_C.viewport_right_side[pNode->field_C._viewport_space_y]; |
352 v8 = &pNode->field_C.array_18[pNode->field_C._viewport_space_y]; | 352 v8 = &pNode->field_C.viewport_left_side[pNode->field_C._viewport_space_y]; |
353 do | 353 do |
354 { | 354 { |
355 v1[v4 + *v8] = 255; | 355 v1[v4 + *v8] = 255; |
356 ++pNode->field_C._viewport_space_y; | 356 ++pNode->field_C._viewport_space_y; |
357 v1[v4 + *v5] = 255; | 357 v1[v4 + *v5] = 255; |
873 { | 873 { |
874 v24 = 2 * stru_F8A590._viewport_space_y; | 874 v24 = 2 * stru_F8A590._viewport_space_y; |
875 v120 = 2 * stru_F8A590._viewport_space_y; | 875 v120 = 2 * stru_F8A590._viewport_space_y; |
876 while ( 1 ) | 876 while ( 1 ) |
877 { | 877 { |
878 a1 = *(__int16 *)((char *)stru_F8A590.array_18 + v24); | 878 a1 = *(__int16 *)((char *)stru_F8A590.viewport_left_side + v24); |
879 sub_4AE313(a1, v21, &stru_F81018.field_0); | 879 sub_4AE313(a1, v21, &stru_F81018.field_0); |
880 if ( LOBYTE(viewparams->field_20) ) | 880 if ( LOBYTE(viewparams->field_20) ) |
881 { | 881 { |
882 v27 = v111 * (v24 - pBLVRenderParams->uViewportY); | 882 v27 = v111 * (v24 - pBLVRenderParams->uViewportY); |
883 pZPixel = &pBLVRenderParams->pTargetZBuffer[2 | 883 pZPixel = &pBLVRenderParams->pTargetZBuffer[2 |
884 * (*(__int16 *)((char *)stru_F8A590.array_18 + v24) | 884 * (*(__int16 *)((char *)stru_F8A590.viewport_left_side + v24) |
885 + 320 * (v24 - pBLVRenderParams->uViewportY)) | 885 + 320 * (v24 - pBLVRenderParams->uViewportY)) |
886 - pBLVRenderParams->uViewportX]; | 886 - pBLVRenderParams->uViewportX]; |
887 pColorPixel = &pBLVRenderParams->pRenderTarget[v27 | 887 pColorPixel = &pBLVRenderParams->pRenderTarget[v27 |
888 + 2 * *(__int16 *)((char *)stru_F8A590.array_18 + v24) | 888 + 2 * *(__int16 *)((char *)stru_F8A590.viewport_left_side + v24) |
889 - pBLVRenderParams->uViewportX]; | 889 - pBLVRenderParams->uViewportX]; |
890 v26 = &pBLVRenderParams->pRenderTarget[v27 | 890 v26 = &pBLVRenderParams->pRenderTarget[v27 |
891 + 2 * *(__int16 *)((char *)stru_F8A590.array_3D8 + v24) | 891 + 2 * *(__int16 *)((char *)stru_F8A590.viewport_right_side + v24) |
892 - pBLVRenderParams->uViewportX]; | 892 - pBLVRenderParams->uViewportX]; |
893 v23 = v119; | 893 v23 = v119; |
894 } | 894 } |
895 else | 895 else |
896 { | 896 { |
897 v25 = *(__int16 *)((char *)stru_F8A590.array_18 + v24); | 897 v25 = *(__int16 *)((char *)stru_F8A590.viewport_left_side + v24); |
898 pZPixel = &pBLVRenderParams->pTargetZBuffer[v25 + v23]; | 898 pZPixel = &pBLVRenderParams->pTargetZBuffer[v25 + v23]; |
899 pColorPixel = &pBLVRenderParams->pRenderTarget[v25 + v110]; | 899 pColorPixel = &pBLVRenderParams->pRenderTarget[v25 + v110]; |
900 v26 = &pBLVRenderParams->pRenderTarget[v110 + *(__int16 *)((char *)stru_F8A590.array_3D8 + v24)]; | 900 v26 = &pBLVRenderParams->pRenderTarget[v110 + *(__int16 *)((char *)stru_F8A590.viewport_right_side + v24)]; |
901 } | 901 } |
902 v131 = (unsigned int)v26; | 902 v131 = (unsigned int)v26; |
903 HIWORD(v28) = HIWORD(stru_F81018.field_0.field_0); | 903 HIWORD(v28) = HIWORD(stru_F81018.field_0.field_0); |
904 LOWORD(v28) = 0; | 904 LOWORD(v28) = 0; |
905 v105 = stru_F8AD28.field_0 | v28; | 905 v105 = stru_F8AD28.field_0 | v28; |
1257 { | 1257 { |
1258 //unsigned int v3; // edx@1 | 1258 //unsigned int v3; // edx@1 |
1259 //stru170 *v4; // ebx@1 | 1259 //stru170 *v4; // ebx@1 |
1260 //BLVFace *v5; // eax@1 | 1260 //BLVFace *v5; // eax@1 |
1261 //int v6; // ecx@2 | 1261 //int v6; // ecx@2 |
1262 unsigned __int16 v7; // ax@11 | 1262 unsigned __int16 TransitionSectorID; // ax@11 |
1263 Vec3_short_ *v8; // esi@15 | 1263 //Vec3_short_ *v8; // esi@15 |
1264 int v9; // edx@15 | 1264 int v9; // edx@15 |
1265 //signed int v10; // eax@18 | 1265 //signed int v10; // eax@18 |
1266 //signed int v11; // edi@19 | 1266 //signed int v11; // edi@19 |
1267 //signed int v12; // ecx@19 | 1267 //signed int v12; // ecx@19 |
1268 //signed int v13; // esi@19 | 1268 //signed int v13; // esi@19 |
1324 { | 1324 { |
1325 if ( abs(pFace->pFacePlane_old.dist + pBLVRenderParams->vPartyPos.x * pFace->pFacePlane_old.vNormal.x | 1325 if ( abs(pFace->pFacePlane_old.dist + pBLVRenderParams->vPartyPos.x * pFace->pFacePlane_old.vNormal.x |
1326 + pBLVRenderParams->vPartyPos.y * pFace->pFacePlane_old.vNormal.y | 1326 + pBLVRenderParams->vPartyPos.y * pFace->pFacePlane_old.vNormal.y |
1327 + pBLVRenderParams->vPartyPos.z * pFace->pFacePlane_old.vNormal.z) <= 589824 ) // we sure are standing at the portal plane | 1327 + pBLVRenderParams->vPartyPos.z * pFace->pFacePlane_old.vNormal.z) <= 589824 ) // we sure are standing at the portal plane |
1328 { | 1328 { |
1329 v7 = pFace->uSectorID; | 1329 TransitionSectorID = pFace->uSectorID; |
1330 if ( nodes[0].uSectorID == v7 ) // draw back sector | 1330 if ( nodes[0].uSectorID == TransitionSectorID ) // draw back sector |
1331 v7 = pFace->uBackSectorID; | 1331 TransitionSectorID = pFace->uBackSectorID; |
1332 nodes[num_nodes].uSectorID = v7; | 1332 nodes[num_nodes].uSectorID = TransitionSectorID; |
1333 nodes[num_nodes].uFaceID = uFaceID; | 1333 nodes[num_nodes].uFaceID = uFaceID; |
1334 nodes[num_nodes].uViewportX = pBLVRenderParams->uViewportX; | 1334 nodes[num_nodes].uViewportX = pBLVRenderParams->uViewportX; |
1335 nodes[num_nodes].uViewportZ = pBLVRenderParams->uViewportZ; | 1335 nodes[num_nodes].uViewportZ = pBLVRenderParams->uViewportZ; |
1336 nodes[num_nodes].uViewportY = pBLVRenderParams->uViewportY; | 1336 nodes[num_nodes].uViewportY = pBLVRenderParams->uViewportY; |
1337 nodes[num_nodes].uViewportW = pBLVRenderParams->uViewportW; | 1337 nodes[num_nodes].uViewportW = pBLVRenderParams->uViewportW; |
1338 nodes[num_nodes].field_C._43F9E1(pBLVRenderParams->uViewportX, pBLVRenderParams->uViewportY, | 1338 nodes[num_nodes].field_C.GetViewportData(pBLVRenderParams->uViewportX, pBLVRenderParams->uViewportY, |
1339 pBLVRenderParams->uViewportZ, pBLVRenderParams->uViewportW); | 1339 pBLVRenderParams->uViewportZ, pBLVRenderParams->uViewportW); |
1340 AddBspNodeToRenderList(++num_nodes - 1); | 1340 AddBspNodeToRenderList(++num_nodes - 1); |
1341 return; | 1341 return; |
1342 } | 1342 } |
1343 //v5 = v39; | 1343 //v5 = v39; |
1344 //v6 = a0; | 1344 //v6 = a0; |
1345 } | 1345 } |
1346 | 1346 |
1347 v8 = &pIndoor->pVertices[pFace->pVertexIDs[0]]; | 1347 //отбраковка по ориентации |
1348 v9 = pFace->pFacePlane_old.vNormal.x * (v8->x - pBLVRenderParams->vPartyPos.x) | 1348 v9 = pFace->pFacePlane_old.vNormal.x * (pIndoor->pVertices[pFace->pVertexIDs[0]].x - pBLVRenderParams->vPartyPos.x) |
1349 + pFace->pFacePlane_old.vNormal.y * (v8->y - pBLVRenderParams->vPartyPos.y) | 1349 + pFace->pFacePlane_old.vNormal.y * (pIndoor->pVertices[pFace->pVertexIDs[0]].y - pBLVRenderParams->vPartyPos.y) |
1350 + pFace->pFacePlane_old.vNormal.z * (v8->z - pBLVRenderParams->vPartyPos.z); | 1350 + pFace->pFacePlane_old.vNormal.z * (pIndoor->pVertices[pFace->pVertexIDs[0]].z - pBLVRenderParams->vPartyPos.z); |
1351 if (p->uSectorID != pFace->uSectorID) | 1351 if (p->uSectorID != pFace->uSectorID) |
1352 v9 = -v9; | 1352 v9 = -v9; |
1353 if (v9 >= 0) | 1353 if (v9 >= 0) |
1354 return; | 1354 return; |
1355 | 1355 |
1489 v3->nodes[v3->num_nodes].uFaceID = uFaceID; | 1489 v3->nodes[v3->num_nodes].uFaceID = uFaceID; |
1490 v3->nodes[v3->num_nodes].uViewportX = LOWORD(pBLVRenderParams->uViewportX); | 1490 v3->nodes[v3->num_nodes].uViewportX = LOWORD(pBLVRenderParams->uViewportX); |
1491 v3->nodes[v3->num_nodes].uViewportZ = LOWORD(pBLVRenderParams->uViewportZ); | 1491 v3->nodes[v3->num_nodes].uViewportZ = LOWORD(pBLVRenderParams->uViewportZ); |
1492 v3->nodes[v3->num_nodes].uViewportY = LOWORD(pBLVRenderParams->uViewportY); | 1492 v3->nodes[v3->num_nodes].uViewportY = LOWORD(pBLVRenderParams->uViewportY); |
1493 v3->nodes[v3->num_nodes].uViewportW = LOWORD(pBLVRenderParams->uViewportW); | 1493 v3->nodes[v3->num_nodes].uViewportW = LOWORD(pBLVRenderParams->uViewportW); |
1494 v3->nodes[v3->num_nodes++].field_C._43F9E1( | 1494 v3->nodes[v3->num_nodes++].field_C.GetViewportData( |
1495 SLOWORD(pBLVRenderParams->uViewportX), | 1495 SLOWORD(pBLVRenderParams->uViewportX), |
1496 pBLVRenderParams->uViewportY, | 1496 pBLVRenderParams->uViewportY, |
1497 SLOWORD(pBLVRenderParams->uViewportZ), | 1497 SLOWORD(pBLVRenderParams->uViewportZ), |
1498 pBLVRenderParams->uViewportW); | 1498 pBLVRenderParams->uViewportW); |
1499 v7 = v3->num_nodes - 1; | 1499 v7 = v3->num_nodes - 1; |
1608 if ( stru_F8A590._viewport_space_y <= stru_F8A590._viewport_space_w ) | 1608 if ( stru_F8A590._viewport_space_y <= stru_F8A590._viewport_space_w ) |
1609 { | 1609 { |
1610 v6 = 640 * stru_F8A590._viewport_space_y; | 1610 v6 = 640 * stru_F8A590._viewport_space_y; |
1611 do | 1611 do |
1612 { | 1612 { |
1613 v5[v6 + stru_F8A590.array_18[v4]] = -1; | 1613 v5[v6 + stru_F8A590.viewport_left_side[v4]] = -1; |
1614 v7 = v6 + stru_F8A590.array_3D8[v4]; | 1614 v7 = v6 + stru_F8A590.viewport_right_side[v4]; |
1615 v6 += 640; | 1615 v6 += 640; |
1616 v5[v7] = -1; | 1616 v5[v7] = -1; |
1617 ++v4; | 1617 ++v4; |
1618 } | 1618 } |
1619 while ( v4 <= stru_F8A590._viewport_space_w ); | 1619 while ( v4 <= stru_F8A590._viewport_space_w ); |