Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int __cdecl CShadows::RenderStoredShadows()
- {
- int numShadows; // ecx@1
- int zero; // ebx@1
- char *v2; // eax@2
- int v3; // edx@2
- int v4; // edi@4
- int shadowOffset; // ebp@5
- char *v6; // esi@6
- float pShadowTexture; // ebx@8
- CRegisteredShadow *pShadow; // edi@11
- float pShadowCenterPosition.y; // edx@11
- long double v10; // fst7@11
- long double Y1; // fst6@11
- int shadowZpos; // eax@11
- long double v13; // fst6@11
- long double SectorL_X; // fst7@11
- long double SectorL_Y; // fst7@14
- long double SectorU_X; // fst7@17
- long double SectorU_Y; // fst7@20
- float _SectorL_Y_int; // ecx@26
- int _CornerL_X; // ebx@27
- float _SectorL_X_int; // eax@28
- int v21; // ecx@31
- bool v22; // ecx@31
- signed int v23; // eax@33
- int streamSector; // eax@35
- int shadowData; // ecx@35
- int sectorNum; // eax@35
- unsigned __int8 v27; // sf@45
- unsigned __int8 v28; // of@45
- int _numIndices; // edx@54
- signed int _numVerts; // ecx@54
- int v31; // ebx@54
- int v32; // edi@54
- unsigned __int64 v33; // qax@54
- long double v34; // fst7@54
- unsigned __int64 v35; // qax@54
- long double v36; // fst7@54
- unsigned __int64 v37; // qax@54
- long double v38; // fst7@54
- long double v39; // fst6@54
- int v40; // ebx@67
- int v41; // edi@67
- long double v42; // fst7@67
- long double v43; // fst6@67
- float v44; // edx@67
- long double v45; // fst4@67
- float v46; // eax@67
- float v47; // ST68_4@67
- long double v48; // fst5@67
- long double v49; // fst4@67
- int v50; // edx@67
- long double v51; // fst7@67
- long double v52; // fst6@67
- float v53; // ecx@67
- int v54; // ST38_4@67
- int v55; // ST34_4@67
- long double v56; // fst7@67
- long double v57; // fst7@67
- long double v58; // fst6@67
- float v59; // ecx@67
- float v60; // edx@67
- long double v61; // fst4@67
- long double v62; // fst5@67
- long double v63; // fst4@67
- long double v64; // fst5@67
- float v65; // ecx@67
- float v66; // eax@67
- int v67; // ST24_4@67
- long double v68; // fst7@67
- int v69; // ST20_4@67
- int v70; // edx@67
- long double v71; // fst7@67
- long double v72; // fst7@67
- long double v73; // fst6@67
- float v74; // eax@67
- long double v75; // fst4@67
- float v76; // ecx@67
- float v77; // ST68_4@67
- long double v78; // fst5@67
- long double v79; // fst4@67
- long double v80; // fst3@67
- long double v81; // fst5@67
- float v82; // eax@67
- int v83; // ST10_4@67
- int v84; // ST0C_4@67
- long double v85; // fst7@67
- long double v86; // fst7@67
- long double v87; // fst6@67
- signed int v88; // edx@67
- float v89; // ecx@67
- long double v90; // fst4@67
- long double v91; // fst5@67
- long double v92; // fst4@67
- unsigned __int64 v93; // qax@67
- long double v94; // fst5@67
- long double v95; // fst7@67
- long double v96; // fst6@67
- long double v97; // fst6@67
- int result; // eax@75
- int v99; // [sp-Ch] [bp-114h]@37
- int v100; // [sp-8h] [bp-110h]@37
- int colorType; // [sp+4h] [bp-104h]@37
- float _SectorL_X; // [sp+1Ch] [bp-ECh]@11
- float _SectorL_Y; // [sp+1Ch] [bp-ECh]@14
- float _SectorU_X; // [sp+1Ch] [bp-ECh]@17
- float _SectorU_Y; // [sp+1Ch] [bp-ECh]@20
- float __SectorL_Y_int_old; // [sp+1Ch] [bp-ECh]@26
- int __SectorL_Y_int_olde; // [sp+1Ch] [bp-ECh]@56
- int CornerU_X; // [sp+20h] [bp-E8h]@11
- int CornerU_Y; // [sp+24h] [bp-E4h]@11
- signed int CornerU_Ya; // [sp+24h] [bp-E4h]@55
- char buf; // [sp+2Bh] [bp-DDh]@36
- int temp_CornerL_X; // [sp+2Ch] [bp-DCh]@11
- int CornerL_Y; // [sp+30h] [bp-D8h]@11
- float v114; // [sp+34h] [bp-D4h]@67
- float SectorL; // [sp+38h] [bp-D0h]@15
- float SectorU_Y_int; // [sp+3Ch] [bp-CCh]@21
- float v117; // [sp+40h] [bp-C8h]@8
- float SectorU_X_int; // [sp+44h] [bp-C4h]@18
- int v119; // [sp+48h] [bp-C0h]@67
- float v120; // [sp+4Ch] [bp-BCh]@7
- float v121; // [sp+50h] [bp-B8h]@52
- int v122; // [sp+54h] [bp-B4h]@52
- float SectorL_X_int; // [sp+58h] [bp-B0h]@12
- int v124; // [sp+5Ch] [bp-ACh]@52
- float shadowCenterPosition.x; // [sp+60h] [bp-A8h]@11
- float pShadowYpos; // [sp+64h] [bp-A4h]@11
- int _shadowZpos; // [sp+68h] [bp-A0h]@11
- int v128; // [sp+6Ch] [bp-9Ch]@4
- float v129; // [sp+70h] [bp-98h]@67
- float v130; // [sp+74h] [bp-94h]@67
- float v131; // [sp+78h] [bp-90h]@67
- float v132; // [sp+7Ch] [bp-8Ch]@67
- float v133; // [sp+80h] [bp-88h]@67
- float v134; // [sp+84h] [bp-84h]@67
- float v135; // [sp+88h] [bp-80h]@54
- float v136; // [sp+8Ch] [bp-7Ch]@67
- float v137; // [sp+90h] [bp-78h]@67
- float v138; // [sp+94h] [bp-74h]@67
- int v139; // [sp+98h] [bp-70h]@54
- float v140; // [sp+9Ch] [bp-6Ch]@67
- float v141; // [sp+A0h] [bp-68h]@67
- float v142; // [sp+A4h] [bp-64h]@67
- float v143; // [sp+A8h] [bp-60h]@67
- float v144; // [sp+ACh] [bp-5Ch]@67
- float v145; // [sp+B4h] [bp-54h]@67
- float v146; // [sp+B8h] [bp-50h]@67
- float v147; // [sp+C0h] [bp-48h]@67
- float v148; // [sp+C4h] [bp-44h]@67
- float v149; // [sp+CCh] [bp-3Ch]@67
- float v150; // [sp+D0h] [bp-38h]@67
- float v151; // [sp+D8h] [bp-30h]@67
- float v152; // [sp+E4h] [bp-24h]@67
- float v153; // [sp+F0h] [bp-18h]@67
- float v154; // [sp+FCh] [bp-Ch]@67
- zero = 0;
- numIndices = 0;
- numVerts = 0;
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEZWRITEENABLE, rwRENDERSTATENARENDERSTATE);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEZTESTENABLE, 1);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEVERTEXALPHAENABLE, 1);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEFOGENABLE, 0);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATETEXTUREADDRESS, 3);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATECULLMODE, 1);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEALPHATESTFUNCTIONREF, 0);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATETEXTUREFILTER, 2);
- numShadows = createdShadowsInFrame;
- if ( createdShadowsInFrame > 0 )
- {
- v2 = &aShadows[50];
- v3 = createdShadowsInFrame;
- do
- {
- *v2 &= 0xFDu;
- v2 += 52; // sizeof(CRegisteredShadow)
- --v3;
- }
- while ( v3 );
- }
- v4 = 0;
- v128 = 0;
- if ( numShadows > 0 )
- {
- shadowOffset = 0;
- do
- {
- v6 = &aShadows[shadowOffset + 36];
- if ( !(aShadows[shadowOffset + 50] & 2) )
- {
- CShadows::setBlending(v6[10]);
- (*(RwEngineInstance + 32))(1, **v6);
- LODWORD(v120) = v4;
- if ( v4 < createdShadowsInFrame )
- {
- LODWORD(pShadowTexture) = &aShadows[shadowOffset + 36];
- LODWORD(v117) = &aShadows[shadowOffset + 36];
- do
- {
- if ( v6[10] == *(LODWORD(pShadowTexture) + 10) && *v6 == *LODWORD(pShadowTexture) )
- {
- pShadow = (LODWORD(pShadowTexture) - 36);
- LODWORD(pShadowCenterPosition.y) = *(LODWORD(pShadowTexture) - 36 + 4);
- v10 = fabs(*(LODWORD(pShadowTexture) - 16)) + fabs(*(LODWORD(pShadowTexture) - 24));
- Y1 = *(LODWORD(pShadowTexture) - 12);
- LODWORD(shadowCenterPosition.x) = *(LODWORD(pShadowTexture) - 36);
- shadowZpos = *(LODWORD(pShadowTexture) - 36 + 8);
- v13 = fabs(Y1) + fabs(*(LODWORD(pShadowTexture) - 20));
- pShadowYpos = pShadowCenterPosition.y;
- _shadowZpos = shadowZpos;
- *&temp_CornerL_X = shadowCenterPosition.x - v10;// Переменная позже используется для других целей
- *&CornerU_X = shadowCenterPosition.x + v10;
- *&CornerL_Y = pShadowCenterPosition.y - v13;
- *&CornerU_Y = pShadowCenterPosition.y + v13;
- SectorL_X = *&temp_CornerL_X * 0.02 + 60.0;// Макс. размер карты в СА - (-3000.0 ; 3000.0)
- _SectorL_X = SectorL_X; // Таким образом, мы получаем сначала коодинаты в районе (-60.0 ; 60.0),
- if ( floor(SectorL_X) <= 0 ) // а после прибавления 60.0 - (0.0 ; 120.0)
- LODWORD(SectorL_X_int) = 0;
- else
- LODWORD(SectorL_X_int) = floor(_SectorL_X);
- SectorL_Y = *&CornerL_Y * 0.02 + 60.0;// :5 +60.0
- _SectorL_Y = SectorL_Y;
- if ( floor(SectorL_Y) <= 0 )
- SectorL = 0.0;
- else
- LODWORD(SectorL) = floor(_SectorL_Y);
- SectorU_X = *&CornerU_X * 0.02 + 60.0;
- _SectorU_X = SectorU_X;
- if ( floor(SectorU_X) >= 119 )
- LODWORD(SectorU_X_int) = 119;
- else
- LODWORD(SectorU_X_int) = floor(_SectorU_X);
- SectorU_Y = *&CornerU_Y * 0.02 + 60.0;
- _SectorU_Y = SectorU_Y;
- if ( floor(SectorU_Y) >= 119 )
- LODWORD(SectorU_Y_int) = 119;
- else
- LODWORD(SectorU_Y_int) = floor(_SectorU_Y);
- if ( ms_nCurrentScanCode >= 65535u )
- {
- CWorld::ClearScanCodes();
- LOWORD(ms_nCurrentScanCode) = 1;
- }
- else
- {
- LOWORD(ms_nCurrentScanCode) = ms_nCurrentScanCode + 1;
- }
- _SectorL_Y_int = SectorL;
- __SectorL_Y_int_old = SectorL;
- if ( SLODWORD(SectorL) <= SLODWORD(SectorU_Y_int) )
- {
- _CornerL_X = temp_CornerL_X;
- do
- {
- _SectorL_X_int = SectorL_X_int;
- SectorL = SectorL_X_int;
- if ( SLODWORD(SectorL_X_int) <= SLODWORD(SectorU_X_int) )
- {
- temp_CornerL_X = LODWORD(_SectorL_Y_int) & ((SLODWORD(_SectorL_Y_int) <= 0) - 1);
- while ( 1 )
- {
- v22 = SLODWORD(_SectorL_X_int) < 0;
- LOBYTE(v22) = SLODWORD(_SectorL_X_int) <= 0;
- v21 = LODWORD(_SectorL_X_int) & (v22 - 1);
- if ( v21 >= 119 )
- v21 = 119;
- v23 = temp_CornerL_X;
- if ( temp_CornerL_X >= 119 )
- v23 = 119;
- sectorNum = v21 + 120 * v23;
- shadowData = pShadow->shadowData;
- streamSector = 8 * sectorNum + 0xB7D0B8;
- if ( shadowData )
- {
- CShadows__CastPedShadowSectorList(
- streamSector,
- *&_CornerL_X,
- *&CornerL_Y,
- *&CornerU_X,
- *&CornerU_Y,
- &shadowCenterPosition.x,
- *&pShadow->X1,
- *&pShadow->Y1,
- pShadow->X2,
- pShadow->Y2,
- pShadow->intensity,
- pShadow->rChannel,
- pShadow->gChannel,
- pShadow->bChannel,
- pShadow->zDistance,
- pShadow->field_20,
- 0,
- shadowData,
- &buf);
- }
- else
- {
- colorType = v6[10];
- v100 = pShadow->field_20;
- v99 = pShadow->zDistance;
- if ( pShadow->flags & 4 )
- CShadows::CastShadowSectorList1(
- streamSector,
- _CornerL_X,
- CornerL_Y,
- CornerU_X,
- CornerU_Y,
- &shadowCenterPosition.x,
- *&pShadow->X1,
- *&pShadow->Y1,
- *&pShadow->X2,
- *&pShadow->Y2,
- pShadow->intensity,
- pShadow->rChannel,
- pShadow->gChannel,
- pShadow->bChannel,
- *&v99,
- *&v100,
- 0,
- &buf,
- colorType);
- else
- CShadows::CastShadowSectorList(
- streamSector,
- _CornerL_X,
- CornerL_Y,
- CornerU_X,
- CornerU_Y,
- &shadowCenterPosition.x,
- *&pShadow->X1,
- *&pShadow->Y1,
- *&pShadow->X2,
- *&pShadow->Y2,
- pShadow->intensity,
- pShadow->rChannel,
- pShadow->gChannel,
- pShadow->bChannel,
- *&v99,
- *&v100,
- 0,
- &buf,
- colorType);
- }
- ++LODWORD(SectorL);
- if ( SLODWORD(SectorL) > SLODWORD(SectorU_X_int) )
- break;
- _SectorL_X_int = SectorL;
- }
- _SectorL_Y_int = __SectorL_Y_int_old;
- }
- ++LODWORD(_SectorL_Y_int);
- __SectorL_Y_int_old = _SectorL_Y_int;
- }
- while ( SLODWORD(_SectorL_Y_int) <= SLODWORD(SectorU_Y_int) );
- pShadowTexture = v117;
- }
- *(LODWORD(pShadowTexture) + 14) |= 2u;
- }
- LODWORD(pShadowTexture) += 52;
- v28 = __OFSUB__(LODWORD(v120) + 1, createdShadowsInFrame);
- v27 = LODWORD(v120)++ + 1 - createdShadowsInFrame < 0;
- v117 = pShadowTexture;
- }
- while ( v27 ^ v28 );
- zero = 0;
- }
- if ( numVerts != zero && RwIm3DTransform(&pVerts, numVerts, zero, 1u) )
- {
- RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, indices, numIndices);
- RwIm3DEnd();
- }
- numIndices = zero;
- numVerts = zero;
- }
- if ( v6[14] & 1
- && sub_6E8580(shadowCenterPosition.x, pShadowYpos, _shadowZpos, &v121, &v124, &v122)
- && v121 < *(v6 - 7) )
- {
- v117 = fabs(*(v6 - 4)) + fabs(*(v6 - 6));
- v120 = fabs(*(v6 - 3)) + fabs(*(v6 - 5));
- v32 = 2 * floor((*(v6 - 9) - v117) * 0.5);
- v33 = floor((*(v6 - 8) - v120) * 0.5);
- v34 = v117 + *(v6 - 9);
- LODWORD(SectorL_X_int) = 2 * v33;
- v35 = ceil(v34 * 0.5);
- v36 = v120 + *(v6 - 8);
- v31 = 2 * v35;
- v139 = 2 * v35;
- v37 = ceil(v36 * 0.5);
- v38 = *(v6 - 5);
- v39 = *(v6 - 6);
- LODWORD(v117) = 2 * v37;
- v135 = v38 * v38 + v39 * v39;
- v120 = *(v6 - 3) * *(v6 - 3) + *(v6 - 4) * *(v6 - 4);
- _numIndices = 0;
- _numVerts = 0;
- numIndices = 0;
- numVerts = 0;
- CornerL_Y = v32;
- if ( v32 <= v31 )
- {
- do
- {
- CornerU_Ya = LODWORD(SectorL_X_int);
- if ( SLODWORD(SectorL_X_int) <= SLODWORD(v117) )
- {
- __SectorL_Y_int_olde = CornerL_Y + 2;
- *&temp_CornerL_X = CornerL_Y;
- SectorU_X_int = 1.0 / v120;
- SectorL = 1.0 / v135;
- SectorU_Y_int = (CornerL_Y + 2);
- do
- {
- if ( _numIndices + 6 >= 0x1000u )
- {
- if ( _numVerts && RwIm3DTransform(&pVerts, _numVerts, 0, 1u) )
- {
- RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, indices, numIndices);
- RwIm3DEnd();
- }
- _numIndices = 0;
- _numVerts = 0;
- numIndices = 0;
- numVerts = 0;
- }
- if ( _numVerts + 4 >= 0x800u )
- {
- if ( _numVerts && RwIm3DTransform(&pVerts, _numVerts, 0, 1u) )
- {
- RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, indices, numIndices);
- RwIm3DEnd();
- }
- _numIndices = 0;
- _numVerts = 0;
- numIndices = 0;
- numVerts = 0;
- }
- v40 = 2 * _numIndices + 0xC4B958;
- v114 = v121;
- v41 = 36 * _numVerts + 0xC4D958;
- dword_C40410 = 6;
- dword_C40414 = 4;
- sub_6E8550(CornerL_Y, CornerU_Ya, &v114, v124, v122);
- v42 = *(v6 - 4);
- v43 = *(v6 - 3);
- LODWORD(v44) = *(v6 - 6);
- v45 = CornerU_Ya;
- LODWORD(v46) = *(v6 - 5);
- v119 = *&aShadows[shadowOffset + 44];
- v143 = v44;
- v47 = v45;
- v144 = v46;
- v151 = *&temp_CornerL_X - *(v6 - 9);
- v48 = v45 - *(v6 - 8);
- v49 = -*(v6 - 7);
- v129 = *&temp_CornerL_X - *(v6 - 9);
- v130 = v47 - *(v6 - 8);
- v131 = -*(v6 - 7);
- BYTE3(v44) = 0;
- *(&v44 + 1) = (v119 * 0.60000002);
- LOBYTE(v44) = aShadows[shadowOffset + 47];
- v50 = aShadows[shadowOffset + 49] | ((aShadows[shadowOffset + 48] | (LODWORD(v44) << 8)) << 8);
- *(v41 + 28) = ((v48 * v43 + v151 * v42 + v49 * 0.0) * SectorU_X_int + 1.0) * 0.5;
- *(v41 + 24) = v50;
- v51 = v130 * v144 + v129 * v143;
- v52 = v131 * 0.0;
- v53 = v121;
- *v41 = temp_CornerL_X;
- v54 = v122;
- *(v41 + 4) = LODWORD(v47);
- v55 = v124;
- *(v41 + 32) = 0.5 - (v51 + v52) * SectorL * 0.5;
- v56 = v114;
- v114 = v53;
- *(v41 + 8) = v56 + 0.059999999;
- sub_6E8550(__SectorL_Y_int_olde, CornerU_Ya, &v114, v55, v54);
- v57 = *(v6 - 4);
- v58 = *(v6 - 3);
- LODWORD(v59) = *(v6 - 6);
- LODWORD(v60) = *(v6 - 5);
- v61 = SectorU_Y_int - *(v6 - 9);
- v119 = *&aShadows[shadowOffset + 44];
- v147 = v59;
- v148 = v60;
- v153 = v61;
- v62 = v47 - *(v6 - 8);
- v63 = -*(v6 - 7);
- v132 = SectorU_Y_int - *(v6 - 9);
- v133 = v47 - *(v6 - 8);
- v134 = -*(v6 - 7);
- BYTE3(v59) = 0;
- *(&v59 + 1) = (v119 * 0.60000002);
- LOBYTE(v59) = aShadows[shadowOffset + 47];
- v64 = (v153 * v57 + v62 * v58 + v63 * 0.0) * SectorU_X_int + 1.0;
- *(v41 + 60) = aShadows[shadowOffset + 49] | ((aShadows[shadowOffset + 48] | (LODWORD(v59) << 8)) << 8);
- v65 = SectorU_Y_int;
- v66 = v121;
- *(v41 + 64) = v64 * 0.5;
- *(v41 + 36) = LODWORD(v65);
- v67 = v122;
- v68 = v132;
- *(v41 + 40) = LODWORD(v47);
- v69 = v124;
- v70 = CornerL_Y;
- *(v41 + 68) = 0.5 - (v68 * v147 + v133 * v148 + v134 * 0.0) * SectorL * 0.5;
- v71 = v114;
- v114 = v66;
- *(v41 + 44) = v71 + 0.059999999;
- CornerU_Ya += 2;
- sub_6E8550(v70, CornerU_Ya, &v114, v69, v67);
- v72 = *(v6 - 4);
- v73 = *(v6 - 3);
- LODWORD(v74) = *(v6 - 6);
- v75 = CornerU_Ya;
- LODWORD(v76) = *(v6 - 5);
- v119 = *&aShadows[shadowOffset + 44];
- v145 = v74;
- v77 = v75;
- v146 = v76;
- v152 = *&temp_CornerL_X - *(v6 - 9);
- v78 = v75 - *(v6 - 8);
- v79 = -*(v6 - 7);
- v136 = *&temp_CornerL_X - *(v6 - 9);
- v137 = v77 - *(v6 - 8);
- v138 = -*(v6 - 7);
- BYTE3(v76) = 0;
- *(&v76 + 1) = (v119 * 0.60000002);
- LOBYTE(v76) = aShadows[shadowOffset + 47];
- v80 = v78;
- v81 = v152 * v72;
- v82 = v121;
- *(v41 + 96) = aShadows[shadowOffset + 49] | ((aShadows[shadowOffset + 48] | (LODWORD(v76) << 8)) << 8);
- *(v41 + 72) = temp_CornerL_X;
- v83 = v122;
- *(v41 + 76) = LODWORD(v77);
- v84 = v124;
- *(v41 + 100) = ((v81 + v80 * v73 + v79 * 0.0) * SectorU_X_int + 1.0) * 0.5;
- *(v41 + 104) = 0.5 - (v136 * v145 + v137 * v146 + v138 * 0.0) * SectorL * 0.5;
- v85 = v114;
- v114 = v82;
- *(v41 + 80) = v85 + 0.059999999;
- sub_6E8550(__SectorL_Y_int_olde, CornerU_Ya, &v114, v84, v83);
- v86 = *(v6 - 4);
- v87 = *(v6 - 3);
- v88 = *&aShadows[shadowOffset + 44];
- LODWORD(v89) = *(v6 - 5);
- v90 = SectorU_Y_int - *(v6 - 9);
- LODWORD(v149) = *(v6 - 6);
- v150 = v89;
- v154 = v90;
- v119 = v88;
- v91 = v77 - *(v6 - 8);
- v92 = -*(v6 - 7);
- v140 = SectorU_Y_int - *(v6 - 9);
- v141 = v77 - *(v6 - 8);
- v142 = -*(v6 - 7);
- v93 = (v88 * 0.60000002);
- HIDWORD(v93) = aShadows[shadowOffset + 48];
- HIWORD(v89) = 0;
- BYTE1(v89) = v93;
- LODWORD(v93) = aShadows[shadowOffset + 49];
- v94 = v154 * v86 + v91 * v87;
- *v40 = 0;
- *(v40 + 8) = 3;
- LOBYTE(v89) = aShadows[shadowOffset + 47];
- *(v41 + 136) = ((v94 + v92 * 0.0) * SectorU_X_int + 1.0) * 0.5;
- *(v41 + 132) = v93 | ((HIDWORD(v93) | (LODWORD(v89) << 8)) << 8);
- *(v41 + 108) = LODWORD(SectorU_Y_int);
- v95 = v140 * v149;
- v96 = v141;
- *(v41 + 112) = LODWORD(v77);
- v97 = v96 * v150;
- *(v40 + 2) = 1;
- *(v40 + 4) = 2;
- *(v40 + 6) = 1;
- *(v40 + 10) = 2;
- *(v41 + 140) = 0.5 - (v95 + v97 + v142 * 0.0) * SectorL * 0.5;
- *(v41 + 116) = v114 + 0.059999999;
- sub_7077A0();
- _numIndices = numIndices;
- _numVerts = numVerts;
- }
- while ( CornerU_Ya <= SLODWORD(v117) );
- v31 = v139;
- }
- CornerL_Y += 2;
- }
- while ( CornerL_Y <= v31 );
- if ( _numVerts && RwIm3DTransform(&pVerts, _numVerts, 0, 1u) )
- {
- RwIm3DRenderIndexedPrimitive(rwPRIMTYPETRILIST, indices, numIndices);
- RwIm3DEnd();
- }
- }
- numIndices = 0;
- numVerts = 0;
- zero = 0;
- }
- v4 = v128 + 1;
- shadowOffset += 0x34u;
- ++v128;
- }
- while ( v128 < createdShadowsInFrame );
- }
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEVERTEXALPHAENABLE, zero);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEZWRITEENABLE, 1);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATEZTESTENABLE, 1);
- (*(RwEngineInstance + 0x20))(rwRENDERSTATETEXTUREADDRESS, 1);
- result = (*(RwEngineInstance + 0x20))(rwRENDERSTATECULLMODE, 2);
- createdShadowsInFrame = zero;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement