comparison DecalBuilder.cpp @ 1119:aa706cde7fda

* dark spells working * found aoe apply buff function * round() moved * some global variable fixes * DecalBuilder::ApplyDecals_OutdoorFace() clean
author zipi
date Wed, 29 May 2013 22:51:00 +0100
parents 39eaa6b00141
children 45a8862d8b6e
comparison
equal deleted inserted replaced
1118:ca415f6bac1c 1119:aa706cde7fda
485 } 485 }
486 486
487 //----- (0049BCEB) -------------------------------------------------------- 487 //----- (0049BCEB) --------------------------------------------------------
488 char DecalBuilder::ApplyDecals_OutdoorFace(ODMFace *pFace) 488 char DecalBuilder::ApplyDecals_OutdoorFace(ODMFace *pFace)
489 { 489 {
490 int v2; // edi@1 490 double v8; // st7@12
491 unsigned int v3; // eax@2 491 unsigned int v10; // [sp+20h] [bp-1Ch]@1
492 char *v4; // edx@5 492
493 double v5; // ST1C_8@12 493 Bloodsplat *pBloodsplat;
494 double v6; // ST14_8@12 494
495 double v7; // ST0C_8@12 495 this->uNumDecals = 0;
496 double v8; // st7@12 496 v10 = pBloodsplatContainer->std__vector_pBloodsplats_size;
497 unsigned int v10; // [sp+20h] [bp-1Ch]@1 497 if ( !(pFace->uAttributes & 0x400000) && !(pFace->uAttributes & 0x10) )
498 498 {
499 v2 = 0; 499 for(int i = 0; i < pBloodsplatContainer->std__vector_pBloodsplats_size; i++ )
500 this->uNumDecals = 0; 500 {
501 v10 = pBloodsplatContainer->std__vector_pBloodsplats_size; 501 pBloodsplat = &pBloodsplatContainer->std__vector_pBloodsplats[i];
502 if ( pBloodsplatContainer->std__vector_pBloodsplats_size ) 502 if ( (double)pFace->pBoundingBox.x1 - pBloodsplat->radius < pBloodsplat->x &&
503 { 503 (double)pFace->pBoundingBox.x2 + pBloodsplat->radius > pBloodsplat->x &&
504 v3 = pFace->uAttributes; 504 (double)pFace->pBoundingBox.y1 - pBloodsplat->radius < pBloodsplat->y &&
505 if ( !(v3 & 0x400000) ) 505 (double)pFace->pBoundingBox.y2 + pBloodsplat->radius > pBloodsplat->y &&
506 { 506 (double)pFace->pBoundingBox.z1 - pBloodsplat->radius < pBloodsplat->z &&
507 if ( !(v3 & 0x10) && (signed int)pBloodsplatContainer->std__vector_pBloodsplats_size > 0 ) 507 (double)pFace->pBoundingBox.z2 + pBloodsplat->radius > pBloodsplat->z )
508 { 508 {
509 v4 = (char *)&pBloodsplatContainer->std__vector_pBloodsplats[0].y; 509 v8 = (double)((pFace->pFacePlane.dist
510 do 510 + round(pBloodsplat->x) * pFace->pFacePlane.vNormal.x
511 { 511 + round(pBloodsplat->y) * pFace->pFacePlane.vNormal.y
512 if ( (double)pFace->pBoundingBox.x1 - *((float *)v4 + 2) < *((float *)v4 - 1) ) 512 + round(pBloodsplat->z) * pFace->pFacePlane.vNormal.z) >> 16);
513 { 513 if ( v8 <= pBloodsplat->radius )
514 if ( (double)pFace->pBoundingBox.x2 + *((float *)v4 + 2) > *((float *)v4 - 1) ) 514 {
515 { 515 pBloodsplat->dot_dist = v8;
516 if ( (double)pFace->pBoundingBox.y1 - *((float *)v4 + 2) < *(float *)v4 ) 516 this->std__vector_30B00C[this->uNumDecals++] = i;
517 { 517 }
518 if ( (double)pFace->pBoundingBox.y2 + *((float *)v4 + 2) > *(float *)v4 ) 518 }
519 { 519 }
520 if ( (double)pFace->pBoundingBox.z1 - *((float *)v4 + 2) < *((float *)v4 + 1) ) 520 }
521 { 521 return 1;
522 if ( (double)pFace->pBoundingBox.z2 + *((float *)v4 + 2) > *((float *)v4 + 1) )
523 {
524 v5 = *((float *)v4 - 1) + 6.7553994e15;
525 v6 = *(float *)v4 + 6.7553994e15;
526 v7 = *((float *)v4 + 1) + 6.7553994e15;
527 v8 = (double)((pFace->pFacePlane.dist
528 + LODWORD(v5) * pFace->pFacePlane.vNormal.x
529 + LODWORD(v6) * pFace->pFacePlane.vNormal.y
530 + LODWORD(v7) * pFace->pFacePlane.vNormal.z) >> 16);
531 if ( v8 <= *((float *)v4 + 2) )
532 {
533 *((float *)v4 + 3) = v8;
534 this->std__vector_30B00C[this->uNumDecals++] = v2;
535 }
536 }
537 }
538 }
539 }
540 }
541 }
542 ++v2;
543 v4 += 40;
544 }
545 while ( v2 < (signed int)v10 );
546 }
547 }
548 }
549 return 1;
550 } 522 }
551 523
552 //----- (0049BE8A) -------------------------------------------------------- 524 //----- (0049BE8A) --------------------------------------------------------
553 bool DecalBuilder::_49BE8A(struct stru148 *a2, Vec3_float_ *_a3, float *a4, RenderVertexSoft *a5, unsigned int uStripType, char a7) 525 bool DecalBuilder::_49BE8A(struct stru148 *a2, Vec3_float_ *_a3, float *a4, RenderVertexSoft *a5, unsigned int uStripType, char a7)
554 { 526 {