Mercurial > mm7
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 { |