Mercurial > mm7
comparison _deleted.cpp @ 1413:3881d2f94eb1
UseNPCSkill
DIALOGUE_USE_NPC_ABILITY
author | Nomad |
---|---|
date | Sat, 27 Jul 2013 16:09:00 +0200 |
parents | 38df78aba732 |
children | 1987f2cca08f |
comparison
equal
deleted
inserted
replaced
1412:182d58b2a34c | 1413:3881d2f94eb1 |
---|---|
724 v28 = 10000.0; | 724 v28 = 10000.0; |
725 v3 = -10000.0; | 725 v3 = -10000.0; |
726 v27 = -10000.0; | 726 v27 = -10000.0; |
727 if ( (signed int)v1 > 0 ) | 727 if ( (signed int)v1 > 0 ) |
728 { | 728 { |
729 v4 = (char *)&array_508690[0].vWorldViewProjY; | 729 v4 = (char *)&sr_508690[0].vWorldViewProjY; |
730 do | 730 do |
731 { | 731 { |
732 if ( *((float *)v4 - 1) < (double)v26 ) | 732 if ( *((float *)v4 - 1) < (double)v26 ) |
733 { | 733 { |
734 LODWORD(v5) = *((int *)v4 - 1); | 734 LODWORD(v5) = *((int *)v4 - 1); |
767 { | 767 { |
768 v10 = LODWORD(v29)++; | 768 v10 = LODWORD(v29)++; |
769 *(&v19 + v10) = i; | 769 *(&v19 + v10) = i; |
770 } | 770 } |
771 } | 771 } |
772 v11 = &array_508690[v19]; | 772 v11 = &sr_508690[v19]; |
773 v12 = &array_508690[v20]; | 773 v12 = &sr_508690[v20]; |
774 v13 = &array_508690[v21]; | 774 v13 = &sr_508690[v21]; |
775 if ( LODWORD(v29) != 3 ) | 775 if ( LODWORD(v29) != 3 ) |
776 { | 776 { |
777 v11 = array_508690; | 777 v11 = sr_508690; |
778 v13 = (RenderVertexSoft *)((char *)array_508690 + 16 * (3 * v1 - 3)); | 778 v13 = (RenderVertexSoft *)((char *)sr_508690 + 16 * (3 * v1 - 3)); |
779 v12 = &array_508690[1]; | 779 v12 = &sr_508690[1]; |
780 v28 = array_508690[1].vWorldPosition.x - array_508690[0].vWorldPosition.x; | 780 v28 = sr_508690[1].vWorldPosition.x - sr_508690[0].vWorldPosition.x; |
781 v27 = array_508690[1].vWorldPosition.y - array_508690[0].vWorldPosition.y; | 781 v27 = sr_508690[1].vWorldPosition.y - sr_508690[0].vWorldPosition.y; |
782 v29 = array_508690[1].vWorldPosition.z - array_508690[0].vWorldPosition.z; | 782 v29 = sr_508690[1].vWorldPosition.z - sr_508690[0].vWorldPosition.z; |
783 v26 = v13->vWorldPosition.x - array_508690[0].vWorldPosition.x; | 783 v26 = v13->vWorldPosition.x - sr_508690[0].vWorldPosition.x; |
784 v25 = v13->vWorldPosition.y - array_508690[0].vWorldPosition.y; | 784 v25 = v13->vWorldPosition.y - sr_508690[0].vWorldPosition.y; |
785 v24 = v13->vWorldPosition.z - array_508690[0].vWorldPosition.z; | 785 v24 = v13->vWorldPosition.z - sr_508690[0].vWorldPosition.z; |
786 if ( v24 * v27 - v25 * v29 == 0.0 ) | 786 if ( v24 * v27 - v25 * v29 == 0.0 ) |
787 { | 787 { |
788 if ( v26 * v29 - v24 * v28 == 0.0 ) | 788 if ( v26 * v29 - v24 * v28 == 0.0 ) |
789 { | 789 { |
790 if ( v25 * v28 - v26 * v27 == 0.0 ) | 790 if ( v25 * v28 - v26 * v27 == 0.0 ) |
791 { | 791 { |
792 v14 = v1 - 2; | 792 v14 = v1 - 2; |
793 LODWORD(v26) = v14; | 793 LODWORD(v26) = v14; |
794 if ( v14 >= 2 ) | 794 if ( v14 >= 2 ) |
795 { | 795 { |
796 v15 = &array_508690[v14]; | 796 v15 = &sr_508690[v14]; |
797 do | 797 do |
798 { | 798 { |
799 v16 = v15->vWorldPosition.x - array_508690[0].vWorldPosition.x; | 799 v16 = v15->vWorldPosition.x - sr_508690[0].vWorldPosition.x; |
800 v17 = v15->vWorldPosition.y - array_508690[0].vWorldPosition.y; | 800 v17 = v15->vWorldPosition.y - sr_508690[0].vWorldPosition.y; |
801 v18 = v15->vWorldPosition.z - array_508690[0].vWorldPosition.z; | 801 v18 = v15->vWorldPosition.z - sr_508690[0].vWorldPosition.z; |
802 v13 = v15; | 802 v13 = v15; |
803 if ( v27 * v18 - v17 * v29 != 0.0 ) | 803 if ( v27 * v18 - v17 * v29 != 0.0 ) |
804 break; | 804 break; |
805 if ( v16 * v29 - v18 * v28 != 0.0 ) | 805 if ( v16 * v29 - v18 * v28 != 0.0 ) |
806 break; | 806 break; |
878 a3->ptr_38 = &stru_8019C8; | 878 a3->ptr_38 = &stru_8019C8; |
879 a3->pTexture = (Texture *)(v4 != -1 ? (int)&pBitmaps_LOD->pTextures[v3] : 0); | 879 a3->pTexture = (Texture *)(v4 != -1 ? (int)&pBitmaps_LOD->pTextures[v3] : 0); |
880 v5 = 0; | 880 v5 = 0; |
881 if ( (signed int)a3->uNumVertices > 0 ) | 881 if ( (signed int)a3->uNumVertices > 0 ) |
882 { | 882 { |
883 v6 = (char *)&array_508690[0].vWorldViewProjY; | 883 v6 = (char *)&sr_508690[0].vWorldViewProjY; |
884 do | 884 do |
885 { | 885 { |
886 v7 = *((float *)v6 - 1) + 6.7553994e15; | 886 v7 = *((float *)v6 - 1) + 6.7553994e15; |
887 dword_50B638[v5] = LODWORD(v7); | 887 dword_50B638[v5] = LODWORD(v7); |
888 v8 = *(float *)v6 + 6.7553994e15; | 888 v8 = *(float *)v6 + 6.7553994e15; |
1585 goto LABEL_71; | 1585 goto LABEL_71; |
1586 v12->_48276F_sr(); | 1586 v12->_48276F_sr(); |
1587 v39 = 0; | 1587 v39 = 0; |
1588 if ( (signed int)v12->uNumVertices > 0 ) | 1588 if ( (signed int)v12->uNumVertices > 0 ) |
1589 { | 1589 { |
1590 v40 = (char *)&array_508690[0].vWorldViewProjY; | 1590 v40 = (char *)&sr_508690[0].vWorldViewProjY; |
1591 do | 1591 do |
1592 { | 1592 { |
1593 LODWORD(v64) = *((int *)v40 - 1); | 1593 LODWORD(v64) = *((int *)v40 - 1); |
1594 v41 = v64 + 6.7553994e15; | 1594 v41 = v64 + 6.7553994e15; |
1595 v69 = LODWORD(v41); | 1595 v69 = LODWORD(v41); |
1613 goto LABEL_71; | 1613 goto LABEL_71; |
1614 v12->_48276F_sr(); | 1614 v12->_48276F_sr(); |
1615 v46 = 0; | 1615 v46 = 0; |
1616 if ( (signed int)v12->uNumVertices > 0 ) | 1616 if ( (signed int)v12->uNumVertices > 0 ) |
1617 { | 1617 { |
1618 v47 = (char *)&array_508690[0].vWorldViewProjY; | 1618 v47 = (char *)&sr_508690[0].vWorldViewProjY; |
1619 do | 1619 do |
1620 { | 1620 { |
1621 LODWORD(v61) = *((int *)v47 - 1); | 1621 LODWORD(v61) = *((int *)v47 - 1); |
1622 v48 = v61 + 6.7553994e15; | 1622 v48 = v61 + 6.7553994e15; |
1623 v65 = LODWORD(v48); | 1623 v65 = LODWORD(v48); |
1644 v12, | 1644 v12, |
1645 0); | 1645 0); |
1646 v51 = 0; | 1646 v51 = 0; |
1647 if ( (signed int)v12->uNumVertices > 0 ) | 1647 if ( (signed int)v12->uNumVertices > 0 ) |
1648 { | 1648 { |
1649 v52 = (char *)&array_508690[0].vWorldViewProjY; | 1649 v52 = (char *)&sr_508690[0].vWorldViewProjY; |
1650 do | 1650 do |
1651 { | 1651 { |
1652 LODWORD(v62) = *((int *)v52 - 1); | 1652 LODWORD(v62) = *((int *)v52 - 1); |
1653 v53 = v62 + 6.7553994e15; | 1653 v53 = v62 + 6.7553994e15; |
1654 v60 = LODWORD(v53); | 1654 v60 = LODWORD(v53); |
1661 } | 1661 } |
1662 while ( v51 < (signed int)v12->uNumVertices ); | 1662 while ( v51 < (signed int)v12->uNumVertices ); |
1663 } | 1663 } |
1664 } | 1664 } |
1665 } | 1665 } |
1666 sr_sub_486B4E_push_outdoor_edges(array_508690, dword_50B638.data(), dword_50B570.data(), v12); | 1666 sr_sub_486B4E_push_outdoor_edges(sr_508690, dword_50B638.data(), dword_50B570.data(), v12); |
1667 } | 1667 } |
1668 LABEL_72: | 1668 LABEL_72: |
1669 ++v79; | 1669 ++v79; |
1670 v1 = v78; | 1670 v1 = v78; |
1671 ++v3; | 1671 ++v3; |
4196 v38->uNumVertices = v54; | 4196 v38->uNumVertices = v54; |
4197 if ( v54 ) | 4197 if ( v54 ) |
4198 { | 4198 { |
4199 sr_sub_4829B9((RenderVertexSoft *)HIDWORD(v101), v52, v104, v38, 0); | 4199 sr_sub_4829B9((RenderVertexSoft *)HIDWORD(v101), v52, v104, v38, 0); |
4200 LABEL_68: | 4200 LABEL_68: |
4201 sr_sub_481DB2(array_508690, v54, v38); | 4201 sr_sub_481DB2(sr_508690, v54, v38); |
4202 LABEL_75: | 4202 LABEL_75: |
4203 v17 = &array_77EC08[pOutdoorCamera->uNumPolygons]; | 4203 v17 = &array_77EC08[pOutdoorCamera->uNumPolygons]; |
4204 v57 = pOutdoor->GetTileTexture(v101, v100); | 4204 v57 = pOutdoor->GetTileTexture(v101, v100); |
4205 v17->uTileBitmapID = v57; | 4205 v17->uTileBitmapID = v57; |
4206 if ( v57 == -1 ) | 4206 if ( v57 == -1 ) |
4299 v68 = v17; | 4299 v68 = v17; |
4300 v67 = v103; | 4300 v67 = v103; |
4301 LABEL_37: | 4301 LABEL_37: |
4302 sr_sub_4829B9(v35, v34, v67, v68, v69); | 4302 sr_sub_4829B9(v35, v34, v67, v68, v69); |
4303 LABEL_38: | 4303 LABEL_38: |
4304 sr_sub_481DB2(array_508690, v33, v17); | 4304 sr_sub_481DB2(sr_508690, v33, v17); |
4305 goto LABEL_105; | 4305 goto LABEL_105; |
4306 } | 4306 } |
4307 goto LABEL_74; | 4307 goto LABEL_74; |
4308 } | 4308 } |
4309 v55 = sr_4252E8(3u); | 4309 v55 = sr_4252E8(3u); |
8049 v102 = (double)(pViewport->uViewportBR_Y + 1); | 8049 v102 = (double)(pViewport->uViewportBR_Y + 1); |
8050 if ( a1 <= 0 ) | 8050 if ( a1 <= 0 ) |
8051 return v117; | 8051 return v117; |
8052 v127 = a1; | 8052 v127 = a1; |
8053 v1 = a1; | 8053 v1 = a1; |
8054 memcpy(array_508690, array_50AC10, 4 * ((unsigned int)(48 * a1) >> 2)); | 8054 memcpy(sr_508690, array_50AC10, 4 * ((unsigned int)(48 * a1) >> 2)); |
8055 v2 = 0; | 8055 v2 = 0; |
8056 do | 8056 do |
8057 { | 8057 { |
8058 if ( array_50AC10[v2].vWorldViewProjX < (double)v101 || array_50AC10[v2].vWorldViewProjX > (double)v100 ) | 8058 if ( array_50AC10[v2].vWorldViewProjX < (double)v101 || array_50AC10[v2].vWorldViewProjX > (double)v100 ) |
8059 v136 = 0; | 8059 v136 = 0; |
8348 memcpy(&array_508FF0[v123], array_508FF0, sizeof(array_508FF0[v123])), | 8348 memcpy(&array_508FF0[v123], array_508FF0, sizeof(array_508FF0[v123])), |
8349 v61 = array_508FF0[0].vWorldViewProjY + 6.7553994e15, | 8349 v61 = array_508FF0[0].vWorldViewProjY + 6.7553994e15, |
8350 v62 = SLODWORD(v61) <= (signed int)pViewport->uViewportBR_Y, | 8350 v62 = SLODWORD(v61) <= (signed int)pViewport->uViewportBR_Y, |
8351 v123 < 1) ) | 8351 v123 < 1) ) |
8352 goto LABEL_112; | 8352 goto LABEL_112; |
8353 v63 = (char *)&array_508690[0].vWorldViewProjX; | 8353 v63 = (char *)&sr_508690[0].vWorldViewProjX; |
8354 v131 = array_508690; | 8354 v131 = sr_508690; |
8355 v120 = (char *)&array_508690[0].vWorldViewProjX; | 8355 v120 = (char *)&sr_508690[0].vWorldViewProjX; |
8356 v140 = (char *)&array_508690[0].vWorldViewProjY; | 8356 v140 = (char *)&sr_508690[0].vWorldViewProjY; |
8357 v126 = (char *)&array_508690[0].flt_2C; | 8357 v126 = (char *)&sr_508690[0].flt_2C; |
8358 v135 = (char *)&array_508690[0]._rhw; | 8358 v135 = (char *)&sr_508690[0]._rhw; |
8359 v64 = (char *)&array_508FF0[0].flt_2C; | 8359 v64 = (char *)&array_508FF0[0].flt_2C; |
8360 v113 = v123; | 8360 v113 = v123; |
8361 while ( 2 ) | 8361 while ( 2 ) |
8362 { | 8362 { |
8363 v99 = *((float *)v64 + 8) + 6.7553994e15; | 8363 v99 = *((float *)v64 + 8) + 6.7553994e15; |
8435 break; | 8435 break; |
8436 } | 8436 } |
8437 if ( v116 < 3 ) | 8437 if ( v116 < 3 ) |
8438 goto LABEL_112; | 8438 goto LABEL_112; |
8439 v80 = v116; | 8439 v80 = v116; |
8440 memcpy(&array_508690[v116], array_508690, sizeof(array_508690[v116])); | 8440 memcpy(&sr_508690[v116], sr_508690, sizeof(sr_508690[v116])); |
8441 if ( v116 > 0 ) | 8441 if ( v116 > 0 ) |
8442 { | 8442 { |
8443 v81 = (char *)&array_508690[0].vWorldViewProjX; | 8443 v81 = (char *)&sr_508690[0].vWorldViewProjX; |
8444 v82 = v116; | 8444 v82 = v116; |
8445 do | 8445 do |
8446 { | 8446 { |
8447 LODWORD(v83) = *(int *)v81; | 8447 LODWORD(v83) = *(int *)v81; |
8448 *((float *)v81 - 3) = 1.0 / *((float *)v81 + 2); | 8448 *((float *)v81 - 3) = 1.0 / *((float *)v81 + 2); |
8482 } | 8482 } |
8483 v91 = __OFSUB__(v116, 3); | 8483 v91 = __OFSUB__(v116, 3); |
8484 v90 = v116 - 3 < 0; | 8484 v90 = v116 - 3 < 0; |
8485 if ( v116 > 3 ) | 8485 if ( v116 > 3 ) |
8486 { | 8486 { |
8487 memcpy(&array_508690[v116 + 1], &array_508690[1], sizeof(array_508690[v116 + 1])); | 8487 memcpy(&sr_508690[v116 + 1], &sr_508690[1], sizeof(sr_508690[v116 + 1])); |
8488 if ( v116 > 0 ) | 8488 if ( v116 > 0 ) |
8489 { | 8489 { |
8490 v105 = 1; | 8490 v105 = 1; |
8491 do | 8491 do |
8492 { | 8492 { |
8498 v93 -= v80; | 8498 v93 -= v80; |
8499 if ( v105 >= v80 ) | 8499 if ( v105 >= v80 ) |
8500 v92 = v105 - v80; | 8500 v92 = v105 - v80; |
8501 if ( v94 >= v80 ) | 8501 if ( v94 >= v80 ) |
8502 v95 = v94 - v80; | 8502 v95 = v94 - v80; |
8503 if ( (array_508690[v92].vWorldViewProjX - array_508690[v93].vWorldViewProjX) | 8503 if ( (sr_508690[v92].vWorldViewProjX - sr_508690[v93].vWorldViewProjX) |
8504 * (array_508690[v95].vWorldViewProjY - array_508690[v93].vWorldViewProjY) | 8504 * (sr_508690[v95].vWorldViewProjY - sr_508690[v93].vWorldViewProjY) |
8505 - (array_508690[v95].vWorldViewProjX - array_508690[v93].vWorldViewProjX) | 8505 - (sr_508690[v95].vWorldViewProjX - sr_508690[v93].vWorldViewProjX) |
8506 * (array_508690[v92].vWorldViewProjY - array_508690[v93].vWorldViewProjY) < 0.0 ) | 8506 * (sr_508690[v92].vWorldViewProjY - sr_508690[v93].vWorldViewProjY) < 0.0 ) |
8507 { | 8507 { |
8508 ++v105; | 8508 ++v105; |
8509 } | 8509 } |
8510 else | 8510 else |
8511 { | 8511 { |
8512 v96 = v105; | 8512 v96 = v105; |
8513 if ( v105 < v80 || (v96 = v105 - v80, v105 - v80 < v80) ) | 8513 if ( v105 < v80 || (v96 = v105 - v80, v105 - v80 < v80) ) |
8514 memcpy(&array_508690[v96], &array_508690[v96 + 1], 4 * ((unsigned int)(48 * v80 - 48 * v96) >> 2)); | 8514 memcpy(&sr_508690[v96], &sr_508690[v96 + 1], 4 * ((unsigned int)(48 * v80 - 48 * v96) >> 2)); |
8515 --v80; | 8515 --v80; |
8516 } | 8516 } |
8517 } | 8517 } |
8518 while ( v105 - 1 < v80 ); | 8518 while ( v105 - 1 < v80 ); |
8519 } | 8519 } |
8526 else | 8526 else |
8527 result = v80; | 8527 result = v80; |
8528 return result; | 8528 return result; |
8529 } | 8529 } |
8530 | 8530 |
8531 | 8531 //----- (0048034E) -------------------------------------------------------- |
8532 void Render::DrawTerrainD3D(int a1, int a2, int a3, int unk4) | |
8533 { | |
8534 //int v3; // esi@1 | |
8535 int v4; // edi@1 | |
8536 int v5; // ebx@2 | |
8537 int v6; // eax@2 | |
8538 int v7; // eax@3 | |
8539 RenderVertexSoft *v8; // edi@3 | |
8540 RenderVertexSoft *v9; // ebx@4 | |
8541 RenderVertexSoft *v10; // ecx@4 | |
8542 float v11; // eax@6 | |
8543 double v12; // ST5C_8@6 | |
8544 double v13; // ST2C_8@6 | |
8545 int v14; // eax@6 | |
8546 double v15; // st7@6 | |
8547 struct Polygon *pTile; // ebx@12 | |
8548 unsigned __int16 v17; // ax@12 | |
8549 int v18; // eax@13 | |
8550 signed int v22; // eax@13 | |
8551 Vec3_float_ *norm; // eax@15 | |
8552 //double v24; // st6@17 | |
8553 double v25; // ST54_8@17 | |
8554 unsigned __int8 v26; // sf@17 | |
8555 unsigned __int8 v27; // of@17 | |
8556 double v28; // st5@19 | |
8557 double v29; // st5@19 | |
8558 double v30; // st5@19 | |
8559 double v31; // st5@19 | |
8560 struct struct8 *v32; // esi@21 | |
8561 double v3a; // st7@32 | |
8562 int v33; // edi@38 | |
8563 unsigned int v34; // ecx@47 | |
8564 char v35; // zf@47 | |
8565 unsigned int v36; // eax@50 | |
8566 int v37; // eax@54 | |
8567 //Polygon *v38; // ecx@55 | |
8568 unsigned int v39; // eax@59 | |
8569 struct Polygon *v40; // ebx@62 | |
8570 unsigned __int16 pTileBitmapsID; // ax@62 | |
8571 int v42; // eax@63 | |
8572 LightmapBuilder *v43; // ecx@63 | |
8573 int v44; // eax@63 | |
8574 int v45; // eax@63 | |
8575 int v46; // eax@63 | |
8576 signed int v47; // eax@63 | |
8577 Vec3_float_ *v48; // eax@65 | |
8578 double v49; // st6@67 | |
8579 double v50; // ST4C_8@67 | |
8580 double v51; // st5@71 | |
8581 double v52; // st5@71 | |
8582 double v53; // st5@71 | |
8583 double v54; // st7@84 | |
8584 unsigned int v55; // ecx@98 | |
8585 unsigned int v56; // eax@101 | |
8586 int v57; // eax@105 | |
8587 unsigned int v58; // eax@109 | |
8588 struct Polygon *v59; // esi@112 | |
8589 unsigned __int16 v60; // ax@112 | |
8590 int v61; // eax@113 | |
8591 signed int v62; // eax@113 | |
8592 Vec3_float_ *v63; // eax@114 | |
8593 double v64; // st6@116 | |
8594 double v65; // ST3C_8@116 | |
8595 double v66; // st5@120 | |
8596 double v67; // st5@120 | |
8597 double v68; // st5@120 | |
8598 double v69; // st7@133 | |
8599 int v70; // edi@138 | |
8600 struct Polygon *v71; // esi@147 | |
8601 unsigned int v72; // ecx@147 | |
8602 unsigned int v73; // eax@150 | |
8603 int v74; // eax@154 | |
8604 unsigned int v75; // eax@158 | |
8605 //unsigned int v76; // [sp-10h] [bp-E0h]@61 | |
8606 int v77; // [sp-Ch] [bp-DCh]@61 | |
8607 IDirect3DTexture2 *v78; // [sp-8h] [bp-D8h]@61 | |
8608 //int v79; // [sp-4h] [bp-D4h]@61 | |
8609 bool v80; // [sp+0h] [bp-D0h]@59 | |
8610 bool v81; // [sp+0h] [bp-D0h]@109 | |
8611 int v82; // [sp+54h] [bp-7Ch]@1 | |
8612 int v83; // [sp+60h] [bp-70h]@1 | |
8613 int v84; // [sp+6Ch] [bp-64h]@1 | |
8614 int v85; // [sp+70h] [bp-60h]@63 | |
8615 float a4; // [sp+74h] [bp-5Ch]@73 | |
8616 float v87; // [sp+78h] [bp-58h]@122 | |
8617 int v88; // [sp+7Ch] [bp-54h]@1 | |
8618 int v89; // [sp+80h] [bp-50h]@6 | |
8619 int v93; // [sp+90h] [bp-40h]@2 | |
8620 int X; // [sp+94h] [bp-3Ch]@1 | |
8621 float v95; // [sp+98h] [bp-38h]@21 | |
8622 LightmapBuilder *v96; // [sp+9Ch] [bp-34h]@73 | |
8623 int v97; // [sp+A0h] [bp-30h]@6 | |
8624 int sX; // [sp+A4h] [bp-2Ch]@6 | |
8625 unsigned int uNumVertices; // [sp+A8h] [bp-28h]@73 | |
8626 int v100; // [sp+ACh] [bp-24h]@122 | |
8627 int sY; // [sp+B0h] [bp-20h]@6 | |
8628 RenderVertexSoft *v102; // [sp+B4h] [bp-1Ch]@3 | |
8629 unsigned int a5; // [sp+B8h] [bp-18h]@21 | |
8630 RenderVertexSoft *v101; // [sp+BCh] [bp-14h]@6 | |
8631 Vec3_float_ *v99; // [sp+C0h] [bp-10h]@17 | |
8632 RenderVertexSoft *pVertices; // [sp+C4h] [bp-Ch]@6 | |
8633 RenderVertexSoft *pVertices2; // [sp+C8h] [bp-8h]@6 | |
8634 char v108; // [sp+CFh] [bp-1h]@36 | |
8635 float thisd; // [sp+D8h] [bp+8h]@6 | |
8636 float thise; // [sp+D8h] [bp+8h]@6 | |
8637 float thisf; // [sp+D8h] [bp+8h]@17 | |
8638 IndoorCameraD3D *thisa; // [sp+D8h] [bp+8h]@23 | |
8639 float thisg; // [sp+D8h] [bp+8h]@67 | |
8640 IndoorCameraD3D *thisb; // [sp+D8h] [bp+8h]@75 | |
8641 float thish; // [sp+D8h] [bp+8h]@116 | |
8642 IndoorCameraD3D *thisc; // [sp+D8h] [bp+8h]@124 | |
8643 char this_3; // [sp+DBh] [bp+Bh]@30 | |
8644 char this_3a; // [sp+DBh] [bp+Bh]@82 | |
8645 char this_3b; // [sp+DBh] [bp+Bh]@131 | |
8646 | |
8647 __debugbreak(); | |
8648 static stru154 static_sub_0048034E_stru_154; | |
8649 static stru154 stru_76D5A8; | |
8650 //v3 = a1; | |
8651 v82 = a2; | |
8652 v83 = a3; | |
8653 X = abs(unk4); | |
8654 v4 = 0; | |
8655 v88 = 0; | |
8656 v84 = a1 - 1; | |
8657 if ( a1 - 1 > 0 ) | |
8658 { | |
8659 while ( 1 ) | |
8660 { | |
8661 v5 = abs(X);//v5 = 13108 | |
8662 v6 = abs(v83);//v6 = 13108 | |
8663 --X; | |
8664 //__debugbreak(); // uncoment & refactor following large if | |
8665 v93 = (int)&terrain_76E5C8[(v5 << 7) + v6]; | |
8666 if ( !v93->field_0 || ((v7 = 48 * v4, v8 = &pVerticesSR_806210[v4], a2 = v8, !v82) ? (v9 = (RenderVertexSoft *)((char *)&pVerticesSR_801A10 + v7), | |
8667 v10 = &pVerticesSR_806210[1] + v7) : (v9 = &pVerticesSR_806210[1] + v7, v10 = (RenderVertexSoft *)((char *)&pVerticesSR_801A10 + v7)), | |
8668 ((a8 = v9, | |
8669 pVertices = &pVerticesSR_801A10[1] + v7, | |
8670 v11 = v8->vWorldPosition.x, | |
8671 v101 = v10, | |
8672 v12 = v11 + 6.755399441055744e15, | |
8673 sX = LODWORD(v12), | |
8674 v13 = v8->vWorldPosition.y + 6.755399441055744e15, | |
8675 sY = LODWORD(v13), | |
8676 thisd = (v10->vWorldPosition.x + v8->vWorldPosition.x) * 0.5, | |
8677 v14 = WorldPosToGridCellX(floorf(thisd + 0.5f)),//maybe current camera position X | |
8678 v15 = v9->vWorldPosition.y + v8->vWorldPosition.y, | |
8679 v89 = v14, | |
8680 thise = v15 * 0.5, | |
8681 _this = (LightmapBuilder *)WorldPosToGridCellZ(floorf(thisd + 0.5f)),//maybe current camera position Z | |
8682 WorldPosToGridCellX(sX), | |
8683 WorldPosToGridCellZ(sY), | |
8684 !byte_4D864C) | |
8685 || !(pGame->uFlags & 0x80)) | |
8686 && !_481EFA_clip_terrain_poly(v8, v9, v101, pVertices, 1)) ) | |
8687 if ( !&terrain_76E5C8[(v5 << 7) + v6] ) | |
8688 goto LABEL_162 | |
8689 v8 = &pVerticesSR_806210[v4]; | |
8690 //pVertices2 = &pVerticesSR_801A10[v4 + 1]; | |
8691 //v102 = v8; | |
8692 if (!v82) | |
8693 { | |
8694 pVertices = &pVerticesSR_801A10[v4]; | |
8695 v101 = &pVerticesSR_806210[v4 + 1]; | |
8696 } | |
8697 else | |
8698 { | |
8699 pVertices = &pVerticesSR_801A10[v4 + 1]; | |
8700 v101 = &pVerticesSR_806210[v4]; | |
8701 } | |
8702 sX = floorf(v8->vWorldPosition.x + 0.5f); | |
8703 sY = floorf(v8->vWorldPosition.z + 0.5f); | |
8704 v89 = WorldPosToGridCellX(floorf((v101->vWorldPosition.x + v8->vWorldPosition.x) / 2 + 0.5f)); | |
8705 v97 = WorldPosToGridCellZ(floorf((pVertices->vWorldPosition.z + v8->vWorldPosition.z) / 2 + 0.5f)); | |
8706 /*WorldPosToGridCellX(sX); | |
8707 WorldPosToGridCellZ(sY); | |
8708 if ((!byte_4D864C || !(pGame->uFlags & 0x80)) && !_481EFA_clip_terrain_poly(v8, pVertices, v101, pVertices2, 1)) | |
8709 if ( v8->vWorldPosition.y != pVertices->vWorldPosition.y || pVertices->vWorldPosition.y != pVertices2->vWorldPosition.y | |
8710 || pVertices2->vWorldPosition.y != v101->vWorldPosition.y ) | |
8711 break; | |
8712 pTile = &array_77EC08[pOutdoorCamera->uNumPolygons]; | |
8713 pTile->uTileBitmapID = pOutdoor->GetTileTexture(sX, sY); | |
8714 if ( pTile->uTileBitmapID != -1 ) | |
8715 { | |
8716 pTile->flags = 0x8010 |pOutdoor->GetSomeOtherTileInfo(sX, sY); | |
8717 pTile->field_32 = 0; | |
8718 pTile->field_59 = 1; | |
8719 pTile->terrain_grid_x = (char)v97; | |
8720 __debugbreak(); // warning C4700: uninitialized local variable 'v93' used | |
8721 pTile->field_34 = *(_WORD *)(v93 + 2); | |
8722 pTile->terrain_grid_z = v89; | |
8723 v22 = pTerrainNormalIndices[2 * (v97 + 128 * v89) + 1]; | |
8724 if ( v22 < 0 || v22 > uNumTerrainNormals - 1 ) | |
8725 norm = 0; | |
8726 else | |
8727 norm = &pTerrainNormals[v22]; | |
8728 thisf = 20.0 - ( -(((float)pOutdoor->vSunlight.x / 65536.0) * norm->x) - | |
8729 (((float)pOutdoor->vSunlight.y / 65536.0) * norm->y) - | |
8730 (((float)pOutdoor->vSunlight.z / 65536.0) * norm->z)) * 20.0; | |
8731 //v25 = thisf + 6.7553994e15; | |
8732 //v27 = pOutdoorCamera->uNumPolygons > 1999; | |
8733 //v26 = pOutdoorCamera->uNumPolygons - 1999 < 0; | |
8734 pTile->dimming_level = floorf(thisf + 0.5f); | |
8735 if ( pOutdoorCamera->uNumPolygons >= 1999 ) | |
8736 return; | |
8737 ++pOutdoorCamera->uNumPolygons; | |
8738 //if ( !_481FC9_terrain(v8, pVertices, v101, v16) )//Ritor1: It's temporary | |
8739 //goto LABEL_126; | |
8740 //{ | |
8741 //--pOutdoorCamera->uNumPolygons; | |
8742 //goto LABEL_162; | |
8743 //} | |
8744 __debugbreak(); // warning C4700: uninitialized local variable 'v102' used | |
8745 memcpy(&array_50AC10[0], v102, 0x30u); | |
8746 array_50AC10[0]._rhw = 1.0 / (v102->vWorldViewPosition.x + 0.0000001000000011686097); | |
8747 array_50AC10[0].u = 0.0; | |
8748 array_50AC10[0].v = 0.0; | |
8749 memcpy(&array_50AC10[1], pVertices, sizeof(array_50AC10[1])); | |
8750 array_50AC10[1]._rhw = 1.0 / (pVertices->vWorldViewPosition.x + 0.0000001000000011686097); | |
8751 array_50AC10[1].u = 0.0; | |
8752 array_50AC10[1].v = 1.0; | |
8753 __debugbreak(); // warning C4700: uninitialized local variable 'pVertices2' used | |
8754 memcpy(&array_50AC10[2], pVertices2, sizeof(array_50AC10[2])); | |
8755 array_50AC10[2]._rhw = 1.0 / (pVertices2->vWorldViewPosition.x + 0.0000001000000011686097); | |
8756 array_50AC10[2].u = 1.0; | |
8757 array_50AC10[2].v = 1.0; | |
8758 memcpy(&array_50AC10[3], v101, sizeof(array_50AC10[3])); | |
8759 array_50AC10[3]._rhw = 1.0 / (v101->vWorldViewPosition.x + 0.0000001000000011686097); | |
8760 array_50AC10[3].u = 1.0; | |
8761 array_50AC10[3].v = 0.0; | |
8762 if ( !(byte_76D5C0 & 1) ) | |
8763 { | |
8764 byte_76D5C0 |= 1u; | |
8765 stru154(stru_76D5A8); | |
8766 atexit(loc_481199); | |
8767 } | |
8768 v32 = (struct8 *)array_50AC10; | |
8769 v97 = (int)pGame->pLightmapBuilder; | |
8770 pGame->pLightmapBuilder->StackLights_TerrainFace(norm, &v95, array_50AC10, 4, 1); | |
8771 pDecalBuilder->_49BE8A(pTile, norm, &v95, array_50AC10, 4, 1); | |
8772 a5 = 4; | |
8773 if ( byte_4D864C && pGame->uFlags & 0x80 ) | |
8774 { | |
8775 thisa = pGame->pIndoorCameraD3D; | |
8776 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &a5, 0) == 1 && !a5 ) | |
8777 goto LABEL_162; | |
8778 thisa->ViewTransform(array_50AC10, a5); | |
8779 thisa->Project(array_50AC10, a5, 0); | |
8780 } | |
8781 this_3 = v102->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0 | |
8782 || v101->vWorldViewPosition.x < 8.0 || pVertices2->vWorldViewPosition.x < 8.0; | |
8783 v3a = (double)pOutdoorCamera->shading_dist_mist; | |
8784 v108 = v3a < v102->vWorldViewPosition.x || v3a < pVertices->vWorldViewPosition.x | |
8785 || v3a < v101->vWorldViewPosition.x || v3a < pVertices2->vWorldViewPosition.x; | |
8786 v33 = 0; | |
8787 pGame->pLightmapBuilder->std__vector_000004_size = 0; | |
8788 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) | |
8789 { | |
8790 if ( this_3 ) | |
8791 v33 = 3; | |
8792 else | |
8793 v33 = v108 != 0 ? 5 : 0; | |
8794 static_sub_0048034E_stru_154.ClassifyPolygon(norm, v95); | |
8795 if ( pDecalBuilder->uNumDecals > 0 ) | |
8796 pDecalBuilder->ApplyDecals(31 - pTile->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1); | |
8797 } | |
8798 if ( stru_F8AD28.uNumLightsApplied > 0 ) | |
8799 pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33); | |
8800 v34 = a5; | |
8801 //v35 = byte_4D864C == 0; | |
8802 pTile->uNumVertices = a5; | |
8803 if ( !byte_4D864C || ~pGame->uFlags & 0x80 ) | |
8804 { | |
8805 if ( this_3 ) | |
8806 { | |
8807 v36 = sr_424CD7(v34); | |
8808 pTile->uNumVertices = v36; | |
8809 OutdoorCamera::Project(v36); | |
8810 } | |
8811 if ( v108 ) | |
8812 { | |
8813 v36 = sr_424EE0_MakeFanFromTriangle(v34); | |
8814 pTile->uNumVertices = v36; | |
8815 OutdoorCamera::Project(v36); | |
8816 } | |
8817 } | |
8818 //v37 = *(int *)&v16->flags; | |
8819 if ( ~pTile->flags & 1 ) | |
8820 { | |
8821 if ( pTile->flags & 2 && pTile->uTileBitmapID == pRenderer->hd_water_tile_id ) | |
8822 { | |
8823 v80 = false; | |
8824 v39 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; | |
8825 } | |
8826 else | |
8827 { | |
8828 v39 = pTile->uTileBitmapID; | |
8829 v80 = true; | |
8830 } | |
8831 //v79 = 0; | |
8832 //v78 = pBitmaps_LOD->pHardwareTextures[v39]; | |
8833 pTile->pTexture = (Texture *)&pBitmaps_LOD->pHardwareTextures[v39];// Ritor1: It's temporary | |
8834 v77 = (int)pTile; | |
8835 //v76 = v16->uNumVertices; | |
8836 //LABEL_161: | |
8837 pRenderer->DrawTerrainPolygon(pTile->uNumVertices, pTile, pBitmaps_LOD->pHardwareTextures[v39], false, v80); | |
8838 goto LABEL_162; | |
8839 } | |
8840 LABEL_56: | |
8841 pTile->DrawBorderTiles(); | |
8842 } | |
8843 LABEL_162: | |
8844 v4 = v88 + 1; | |
8845 if ( ++v88 >= v84 ) | |
8846 return; | |
8847 } | |
8848 v40 = &array_77EC08[pOutdoorCamera->uNumPolygons]; | |
8849 v40->uTileBitmapID = pOutdoor->GetTileTexture(sX, sY); | |
8850 if ( v40->uTileBitmapID == -1 ) | |
8851 goto LABEL_162; | |
8852 v42 = pOutdoor->GetSomeOtherTileInfo(sX, sY); | |
8853 BYTE1(v42) |= 0x80u; | |
8854 v43 = pGame->pLightmapBuilder; | |
8855 *(int *)&v40->flags = v42; | |
8856 v44 = v93; | |
8857 v40->field_59 = 1; | |
8858 v40->terrain_grid_x = (char)v43; | |
8859 v40->field_34 = *(_WORD *)(v44 + 2); | |
8860 v45 = v89; | |
8861 v40->terrain_grid_z = v89; | |
8862 v46 = 4 * ((char)v43 + (v45 << 7)); | |
8863 v85 = v46; | |
8864 v47 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v46 + 2);// v47 = pTerrainNormalIndices[v46 + 1]; | |
8865 if ( v47 < 0 || v47 > (signed int)(uNumTerrainNormals - 1) ) | |
8866 v48 = 0; | |
8867 else | |
8868 v48 = &pTerrainNormals[v47]; | |
8869 v49 = v92 * v48->y; | |
8870 //v99 = v48; | |
8871 thisg = 20.0 - (-v49 - v91 * v48->z - v90 * v48->x) * 20.0; | |
8872 v50 = thisg + 6.755399441055744e15; | |
8873 v40->dimming_level = LOBYTE(v50); | |
8874 if ( LOBYTE(v50) < 0 ) | |
8875 v40->dimming_level = 0; | |
8876 if ( pOutdoorCamera->uNumPolygons >= 1999 ) | |
8877 return; | |
8878 ++pOutdoorCamera->uNumPolygons; | |
8879 if ( !_481FC9_terrain(pVertices, pVertices2, v8, v40) ) // Ritor1: It's temporary | |
8880 //goto LABEL_77; | |
8881 { | |
8882 --pOutdoorCamera->uNumPolygons; | |
8883 goto LABEL_112; | |
8884 } | |
8885 memcpy(&array_50AC10[0], v102, 0x30u); | |
8886 array_50AC10[0]._rhw = 1.0 / (v102->vWorldViewPosition.x + 0.0000001000000011686097); | |
8887 array_50AC10[0].u = 0.0; | |
8888 array_50AC10[0].v = 0.0; | |
8889 memcpy(&array_50AC10[1], pVertices, sizeof(array_50AC10[1])); | |
8890 array_50AC10[1]._rhw = 1.0 / pVertices->vWorldViewPosition.x + 0.0000001000000011686097; | |
8891 array_50AC10[1].u = 0.0; | |
8892 array_50AC10[1].v = 1.0; | |
8893 memcpy(&array_50AC10[2], pVertices2, sizeof(array_50AC10[2])); | |
8894 array_50AC10[2]._rhw = 1.0 / pVertices2->vWorldViewPosition.x + 0.0000001000000011686097; | |
8895 array_50AC10[2].u = 1.0; | |
8896 array_50AC10[2].v = 1.0; | |
8897 static stru154 static_sub_0048034E_stru_76D590; | |
8898 static bool __init_flag2 = false; | |
8899 if (!__init_flag2) | |
8900 { | |
8901 __init_flag2 = true; | |
8902 stru154::stru154(&static_sub_0048034E_stru_76D590); | |
8903 } | |
8904 if ( !(byte_76D5C0 & 2) ) | |
8905 { | |
8906 byte_76D5C0 |= 2; | |
8907 Polygon(stru_76D590); | |
8908 atexit(loc_48118F); | |
8909 } | |
8910 v96 = pGame->pLightmapBuilder; | |
8911 pGame->pLightmapBuilder->StackLights_TerrainFace(v48, (float *)&a4, array_50AC10, 3, 0); | |
8912 pDecalBuilder->_49BE8A(v40, v48, &a4, array_50AC10, 3, 0); | |
8913 uNumVertices = 3; | |
8914 if ( byte_4D864C && pGame->uFlags & 0x80 ) | |
8915 { | |
8916 thisb = pGame->pIndoorCameraD3D; | |
8917 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &uNumVertices, 0) == 1 && !uNumVertices ) | |
8918 { | |
8919 //LABEL_77: | |
8920 --pOutdoorCamera->uNumPolygons; | |
8921 goto LABEL_112; | |
8922 } | |
8923 thisb->ViewTransform(array_50AC10, uNumVertices); | |
8924 thisb->Project(array_50AC10, uNumVertices, 0); | |
8925 } | |
8926 this_3a = v102->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0 || pVertices2->vWorldViewPosition.x < 8.0; | |
8927 v54 = (double)pOutdoorCamera->shading_dist_mist; | |
8928 v108 = v54 < v102->vWorldViewPosition.x || v54 < pVertices->vWorldViewPosition.x || v54 < pVertices2->vWorldViewPosition.x; | |
8929 pVertices = 0; | |
8930 v96->std__vector_000004_size = 0; | |
8931 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) | |
8932 { | |
8933 if ( this_3a ) | |
8934 pVertices = (RenderVertexSoft *)3; | |
8935 else | |
8936 pVertices = (RenderVertexSoft *)(v108 != 0 ? 5 : 0); | |
8937 //a8 = (RenderVertexSoft *)(this_3a ? 3 : v108 != 0 ? 5 : 0); | |
8938 static_sub_0048034E_stru_76D590.ClassifyPolygon(v48, *(float *)&a4); | |
8939 if ( pDecalBuilder->uNumDecals > 0 ) | |
8940 pDecalBuilder->ApplyDecals(31 - v40->dimming_level, 4, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices, -1); | |
8941 } | |
8942 if ( stru_F8AD28.uNumLightsApplied > 0 ) | |
8943 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D590, uNumVertices, array_50AC10, 0, (char)pVertices); | |
8944 v55 = uNumVertices; | |
8945 //v35 = byte_4D864C == 0; | |
8946 v40->uNumVertices = uNumVertices; | |
8947 if ( !byte_76D5C0 || !(pGame->uFlags & 0x80) ) | |
8948 { | |
8949 if ( this_3a ) | |
8950 { | |
8951 v56 = sr_424CD7(v55); | |
8952 } | |
8953 else | |
8954 { | |
8955 if ( !v108 ) | |
8956 goto LABEL_105; | |
8957 v56 = sr_424EE0_MakeFanFromTriangle(v55); | |
8958 } | |
8959 v40->uNumVertices = v56; | |
8960 OutdoorCamera::Project(v56); | |
8961 } | |
8962 LABEL_105: | |
8963 v57 = *(int *)&v40->flags; | |
8964 if ( BYTE1(v57) & 1 ) | |
8965 { | |
8966 v40->DrawBorderTiles(); | |
8967 } | |
8968 else | |
8969 { | |
8970 if ( v57 & 2 && v40->uTileBitmapID == pRenderer->hd_water_tile_id ) | |
8971 { | |
8972 v81 = false; | |
8973 v58 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; | |
8974 } | |
8975 else | |
8976 { | |
8977 v58 = v40->uTileBitmapID; | |
8978 v81 = true; | |
8979 } | |
8980 pRenderer->DrawTerrainPolygon(v40->uNumVertices, v40, pBitmaps_LOD->pHardwareTextures[v58], 0, v81); | |
8981 } | |
8982 LABEL_112: | |
8983 v59 = &array_77EC08[pOutdoorCamera->uNumPolygons]; | |
8984 //a8 = (RenderVertexSoft *)&array_77EC08[pOutdoorCamera->uNumPolygons]; | |
8985 v59->uTileBitmapID = pOutdoor->GetTileTexture(sX, sY); | |
8986 if ( v59->uTileBitmapID == -1 ) | |
8987 goto LABEL_162; | |
8988 *(int *)&v59->flags = pOutdoor->GetSomeOtherTileInfo(sX, sY); | |
8989 v61 = v93; | |
8990 v59->field_59 = 1; | |
8991 v59->field_34 = *(_WORD *)(v61 + 2); | |
8992 v59->terrain_grid_z = v89; | |
8993 v59->terrain_grid_x = v97; | |
8994 v62 = *(unsigned __int16 *)((char *)pTerrainNormalIndices + v85); | |
8995 if ( v62 > (signed int)(uNumTerrainNormals - 1) ) | |
8996 v63 = 0; | |
8997 else | |
8998 v63 = &pTerrainNormals[v62]; | |
8999 v64 = v92 * v63->y; | |
9000 //v99 = v63; | |
9001 thish = 20.0 - (-v64 - v91 * v63->y - v90 * v63->x) * 20.0; | |
9002 v59->dimming_level = floorf(thish + 0.5f); | |
9003 if ( v59->dimming_level < 0 ) | |
9004 v59->dimming_level = 0; | |
9005 if ( pOutdoorCamera->uNumPolygons >= 1999 ) | |
9006 return; | |
9007 ++pOutdoorCamera->uNumPolygons; | |
9008 if ( !_481FC9_terrain(v101, v102, pVertices2, v59) ) | |
9009 { | |
9010 //LABEL_126: | |
9011 --pOutdoorCamera->uNumPolygons; | |
9012 goto LABEL_162; | |
9013 } | |
9014 memcpy(&array_50AC10[0], v102, 0x30u); | |
9015 array_50AC10[0]._rhw = 1.0 / (v102->vWorldViewPosition.x + 0.0000001000000011686097); | |
9016 array_50AC10[0].u = 0.0; | |
9017 array_50AC10[0].v = 0.0; | |
9018 memcpy(&array_50AC10[1], pVertices2, sizeof(array_50AC10[1])); | |
9019 array_50AC10[1]._rhw = 1.0 / pVertices2->vWorldViewPosition.x + 0.0000001000000011686097; | |
9020 array_50AC10[1].u = 1.0; | |
9021 array_50AC10[1].v = 1.0; | |
9022 memcpy(&array_50AC10[2], v101, sizeof(array_50AC10[2])); | |
9023 array_50AC10[2]._rhw = 1.0 / v101->vWorldViewPosition.x + 0.0000001000000011686097; | |
9024 array_50AC10[2].u = 1.0; | |
9025 array_50AC10[2].v = 0.0; | |
9026 static stru154 static_sub_0048034E_stru_76D578; | |
9027 static bool __init_flag1 = false; | |
9028 if (!__init_flag1) | |
9029 { | |
9030 __init_flag1 = true; | |
9031 stru154::stru154(&static_sub_0048034E_stru_76D578); | |
9032 } | |
9033 v96 = pGame->pLightmapBuilder; | |
9034 pGame->pLightmapBuilder->StackLights_TerrainFace(v63, &v87, array_50AC10, 3, 1); | |
9035 pDecalBuilder->_49BE8A(v40, v63, &v87, array_50AC10, 3, 1); | |
9036 v100 = 3; | |
9037 if ( byte_4D864C && pGame->uFlags & 0x80 ) | |
9038 { | |
9039 thisc = pGame->pIndoorCameraD3D; | |
9040 if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, (unsigned int *)&v100, 0) == 1 && !v100 ) | |
9041 //goto LABEL_126; | |
9042 { | |
9043 --pOutdoorCamera->uNumPolygons; | |
9044 goto LABEL_162; | |
9045 } | |
9046 thisc->ViewTransform(array_50AC10, v100); | |
9047 thisc->Project(array_50AC10, v100, 0); | |
9048 } | |
9049 this_3b = v102->vWorldViewPosition.x < 8.0 || pVertices2->vWorldViewPosition.x < 8.0 | |
9050 || v101->vWorldViewPosition.x < 8.0; | |
9051 v69 = (double)pOutdoorCamera->shading_dist_mist; | |
9052 v108 = v69 < v102->vWorldViewPosition.x || v69 < pVertices2->vWorldViewPosition.x || v69 < v101->vWorldViewPosition.x; | |
9053 v70 = 0; | |
9054 v96->std__vector_000004_size = 0; | |
9055 if ( stru_F8AD28.uNumLightsApplied > 0 || pDecalBuilder->uNumDecals > 0 ) | |
9056 { | |
9057 if ( this_3b ) | |
9058 v70 = 3; | |
9059 else | |
9060 v70 = v108 != 0 ? 5 : 0; | |
9061 static_sub_0048034E_stru_76D578.ClassifyPolygon(v63, v87); | |
9062 if ( pDecalBuilder->uNumDecals > 0 ) | |
9063 pDecalBuilder->ApplyDecals(31 - v40->dimming_level, 4, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70, -1); | |
9064 } | |
9065 if ( stru_F8AD28.uNumLightsApplied > 0 ) | |
9066 v96->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_76D578, v100, array_50AC10, 0, v70); | |
9067 v71 = v59; | |
9068 v72 = v100; | |
9069 //v35 = byte_4D864C == 0; | |
9070 v59->uNumVertices = v100;//??? | |
9071 if ( !byte_4D864C && pGame->uFlags & 0x80 ) | |
9072 goto LABEL_154; | |
9073 if ( this_3b ) | |
9074 { | |
9075 v73 = sr_424CD7(v72); | |
9076 } | |
9077 else | |
9078 { | |
9079 if ( !v108 ) | |
9080 { | |
9081 LABEL_154: | |
9082 v74 = v71->flags; | |
9083 if ( !(BYTE1(v74) & 1) ) | |
9084 { | |
9085 if ( v74 & 2 && v71->uTileBitmapID == pRenderer->hd_water_tile_id ) | |
9086 { | |
9087 v80 = false; | |
9088 v75 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; | |
9089 } | |
9090 else | |
9091 { | |
9092 v75 = v71->uTileBitmapID; | |
9093 v80 = true; | |
9094 } | |
9095 //v79 = 0; | |
9096 v78 = pBitmaps_LOD->pHardwareTextures[v75]; | |
9097 v71->pTexture = (Texture *)&pBitmaps_LOD->pHardwareTextures[v75];// Ritor1: It's temporary | |
9098 //v77 = (int)v71; | |
9099 //v76 = v71->uNumVertices; | |
9100 //goto LABEL_161; | |
9101 pRenderer->DrawTerrainPolygon(v71->uNumVertices, (Polygon *)v71, v78, 0, v80); | |
9102 goto LABEL_162; | |
9103 } | |
9104 v38 = (Polygon *)v71; | |
9105 goto LABEL_56; | |
9106 } | |
9107 v73 = sr_424EE0_MakeFanFromTriangle(v72); | |
9108 } | |
9109 v71->uNumVertices = v73; | |
9110 OutdoorCamera::Project(v73); | |
9111 goto LABEL_154; | |
9112 } | |
9113 } | |
8532 //----- (00424579) -------------------------------------------------------- | 9114 //----- (00424579) -------------------------------------------------------- |
8533 int __fastcall sr_424579(int uFaceID, stru320 *a2) | 9115 int __fastcall sr_424579(int uFaceID, stru320 *a2) |
8534 { | 9116 { |
8535 BLVFace *v2; // eax@1 | 9117 BLVFace *v2; // eax@1 |
8536 Vec3_short_ *v3; // ebx@1 | 9118 Vec3_short_ *v3; // ebx@1 |