Mercurial > mm7
diff 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 |
line wrap: on
line diff
--- a/DecalBuilder.cpp Wed May 29 20:12:22 2013 +0100 +++ b/DecalBuilder.cpp Wed May 29 22:51:00 2013 +0100 @@ -487,66 +487,38 @@ //----- (0049BCEB) -------------------------------------------------------- char DecalBuilder::ApplyDecals_OutdoorFace(ODMFace *pFace) { - int v2; // edi@1 - unsigned int v3; // eax@2 - char *v4; // edx@5 - double v5; // ST1C_8@12 - double v6; // ST14_8@12 - double v7; // ST0C_8@12 - double v8; // st7@12 - unsigned int v10; // [sp+20h] [bp-1Ch]@1 + double v8; // st7@12 + unsigned int v10; // [sp+20h] [bp-1Ch]@1 + + Bloodsplat *pBloodsplat; - v2 = 0; - this->uNumDecals = 0; - v10 = pBloodsplatContainer->std__vector_pBloodsplats_size; - if ( pBloodsplatContainer->std__vector_pBloodsplats_size ) - { - v3 = pFace->uAttributes; - if ( !(v3 & 0x400000) ) - { - if ( !(v3 & 0x10) && (signed int)pBloodsplatContainer->std__vector_pBloodsplats_size > 0 ) - { - v4 = (char *)&pBloodsplatContainer->std__vector_pBloodsplats[0].y; - do - { - if ( (double)pFace->pBoundingBox.x1 - *((float *)v4 + 2) < *((float *)v4 - 1) ) - { - if ( (double)pFace->pBoundingBox.x2 + *((float *)v4 + 2) > *((float *)v4 - 1) ) - { - if ( (double)pFace->pBoundingBox.y1 - *((float *)v4 + 2) < *(float *)v4 ) - { - if ( (double)pFace->pBoundingBox.y2 + *((float *)v4 + 2) > *(float *)v4 ) - { - if ( (double)pFace->pBoundingBox.z1 - *((float *)v4 + 2) < *((float *)v4 + 1) ) - { - if ( (double)pFace->pBoundingBox.z2 + *((float *)v4 + 2) > *((float *)v4 + 1) ) - { - v5 = *((float *)v4 - 1) + 6.7553994e15; - v6 = *(float *)v4 + 6.7553994e15; - v7 = *((float *)v4 + 1) + 6.7553994e15; - v8 = (double)((pFace->pFacePlane.dist - + LODWORD(v5) * pFace->pFacePlane.vNormal.x - + LODWORD(v6) * pFace->pFacePlane.vNormal.y - + LODWORD(v7) * pFace->pFacePlane.vNormal.z) >> 16); - if ( v8 <= *((float *)v4 + 2) ) - { - *((float *)v4 + 3) = v8; - this->std__vector_30B00C[this->uNumDecals++] = v2; - } - } - } - } - } - } - } - ++v2; - v4 += 40; - } - while ( v2 < (signed int)v10 ); - } - } - } - return 1; + this->uNumDecals = 0; + v10 = pBloodsplatContainer->std__vector_pBloodsplats_size; + if ( !(pFace->uAttributes & 0x400000) && !(pFace->uAttributes & 0x10) ) + { + for(int i = 0; i < pBloodsplatContainer->std__vector_pBloodsplats_size; i++ ) + { + pBloodsplat = &pBloodsplatContainer->std__vector_pBloodsplats[i]; + if ( (double)pFace->pBoundingBox.x1 - pBloodsplat->radius < pBloodsplat->x && + (double)pFace->pBoundingBox.x2 + pBloodsplat->radius > pBloodsplat->x && + (double)pFace->pBoundingBox.y1 - pBloodsplat->radius < pBloodsplat->y && + (double)pFace->pBoundingBox.y2 + pBloodsplat->radius > pBloodsplat->y && + (double)pFace->pBoundingBox.z1 - pBloodsplat->radius < pBloodsplat->z && + (double)pFace->pBoundingBox.z2 + pBloodsplat->radius > pBloodsplat->z ) + { + v8 = (double)((pFace->pFacePlane.dist + + round(pBloodsplat->x) * pFace->pFacePlane.vNormal.x + + round(pBloodsplat->y) * pFace->pFacePlane.vNormal.y + + round(pBloodsplat->z) * pFace->pFacePlane.vNormal.z) >> 16); + if ( v8 <= pBloodsplat->radius ) + { + pBloodsplat->dot_dist = v8; + this->std__vector_30B00C[this->uNumDecals++] = i; + } + } + } + } + return 1; } //----- (0049BE8A) --------------------------------------------------------