comparison Vis.cpp @ 30:8aa7e4a303c9

Vis::SortVerticesByY fixed
author zipi
date Sun, 20 Jan 2013 13:49:07 +0000
parents 8a6ba554d341
children 415e1f2d5936
comparison
equal deleted inserted replaced
29:8a6ba554d341 30:8aa7e4a303c9
1343 bool Vis::SortVerticesByY(RenderVertexD3D3 *a2, unsigned int uStart, unsigned int uEnd) 1343 bool Vis::SortVerticesByY(RenderVertexD3D3 *a2, unsigned int uStart, unsigned int uEnd)
1344 { 1344 {
1345 bool result; // eax@1 1345 bool result; // eax@1
1346 RenderVertexD3D3 *v5; // edx@2 1346 RenderVertexD3D3 *v5; // edx@2
1347 RenderVertexD3D3 *v6; // esi@2 1347 RenderVertexD3D3 *v6; // esi@2
1348 RenderVertexD3D3 v7; // qdi@2 1348 void *v7; // edi@2
1349 unsigned int v8; // ebx@2 1349 unsigned int v8; // ebx@2
1350 int v9; // ecx@3 1350 float *v9; // ecx@3
1351 int v10; // ecx@5 1351 float *v10; // ecx@5
1352 float v11; // eax@8 1352 RenderVertexD3D3 *v11; // eax@8
1353 RenderVertexD3D3 v12; // [sp+4h] [bp-4Ch]@8 1353 RenderVertexD3D3 v12; // [sp+4h] [bp-4Ch]@8
1354 char v13; // [sp+24h] [bp-2Ch]@2 1354 RenderVertexD3D3 v13; // [sp+24h] [bp-2Ch]@2
1355 float v14; // [sp+28h] [bp-28h]@4
1356 Vis *thisa; // [sp+44h] [bp-Ch]@1 1355 Vis *thisa; // [sp+44h] [bp-Ch]@1
1357 RenderVertexD3D3 *v16; // [sp+48h] [bp-8h]@2 1356 RenderVertexD3D3 *v15; // [sp+48h] [bp-8h]@2
1358 unsigned int v17; // [sp+4Ch] [bp-4h]@2 1357 unsigned int v16; // [sp+4Ch] [bp-4h]@2
1359 1358
1360 result = uEnd; 1359 result = uEnd;
1361 thisa = this; 1360 thisa = this;
1362 if ( (signed int)uEnd > (signed int)uStart ) 1361 if ( (signed int)uEnd > (signed int)uStart )
1363 { 1362 {
1364 v5 = a2; 1363 v5 = a2;
1365 v6 = &a2[uEnd]; 1364 v6 = &a2[uEnd];
1366 LODWORD(v7.pos.x) = (int)&v13; 1365 v7 = &v13;
1367 v16 = &a2[uEnd]; 1366 v15 = &a2[uEnd];
1368 v8 = uStart - 1; 1367 v8 = uStart - 1;
1369 v17 = uEnd; 1368 v16 = uEnd;
1370 while ( 1 ) 1369 while ( 1 )
1371 { 1370 {
1372 memcpy(*(void **)&v7.pos.x, v6, 0x20u); 1371 memcpy(v7, v6, 0x20u);
1373 v9 = (int)&v5[v8].pos.y; 1372 v9 = &v5[v8].pos.y;
1374 do 1373 do
1375 { 1374 {
1376 v9 += 32; 1375 v9+=8;
1377 ++v8; 1376 ++v8;
1378 } 1377 }
1379 while ( *(float *)v9 < (double)v14 ); 1378 while ( *v9 < (double)v13.pos.y );
1380 v10 = (int)&v5[v17].pos.y; 1379 v10 = &v5[v16].pos.y;
1381 do 1380 do
1382 { 1381 {
1383 v10 -= 32; 1382 v10-=8;
1384 --v17; 1383 --v16;
1385 } 1384 }
1386 while ( *(float *)v10 > (double)v14 ); 1385 while ( *v10 > (double)v13.pos.y );
1387 if ( (signed int)v8 >= (signed int)v17 ) 1386 if ( (signed int)v8 >= (signed int)v16 )
1388 break; 1387 break;
1389 LODWORD(v11) = (int)&v5[v17]; 1388 v11 = &v5[v16];
1390 memcpy(&v12, &a2[v8], sizeof(v12)); 1389 memcpy(&v12, &a2[v8], sizeof(v12));
1391 v5 = a2; 1390 v5 = a2;
1392 memcpy(&a2[v8], *(void **)&v11, sizeof(a2[v8])); 1391 memcpy(&a2[v8], v11, sizeof(a2[v8]));
1393 v6 = &v12; 1392 v6 = &v12;
1394 v7.pos.x = v11; 1393 v7 = v11;
1395 } 1394 }
1396 memcpy(&v12, &v5[v8], sizeof(v12)); 1395 memcpy(&v12, &v5[v8], sizeof(v12));
1397 memcpy(&v5[v8], v16, sizeof(v5[v8])); 1396 memcpy(&v5[v8], v15, sizeof(v5[v8]));
1398 memcpy(v16, &v12, 0x20u); 1397 memcpy(v15, &v12, 0x20u);
1399 SortVerticesByY(v5, uStart, v8 - 1); 1398 SortVerticesByX(v5, uStart, v8 - 1);
1400 SortVerticesByY(a2, v8 + 1, uEnd); 1399 SortVerticesByX(a2, v8 + 1, uEnd);
1401 } 1400 }
1402 return true; 1401 return true;
1403 } 1402 }
1404 1403
1405 //----- (004C288E) -------------------------------------------------------- 1404 //----- (004C288E) --------------------------------------------------------