- for (i = 0; i < TriangleNum; i++) {
- if (facenormals[i].y < -.1 && (vertex[Triangles[i].vertex[0]].y < where->y || vertex[Triangles[i].vertex[1]].y < where->y || vertex[Triangles[i].vertex[2]].y < where->y)) {
- decalposition[numdecals] = *where;
- decaltype[numdecals] = atype;
- decalrotation[numdecals] = *rotation;
- decalalivetime[numdecals] = 0;
- distance = abs(((facenormals[i].x * where->x) + (facenormals[i].y * where->y) + (facenormals[i].z * where->z) - ((facenormals[i].x * vertex[Triangles[i].vertex[0]].x) + (facenormals[i].y * vertex[Triangles[i].vertex[0]].y) + (facenormals[i].z * vertex[Triangles[i].vertex[0]].z))) / facenormals[i].y);
- decalopacity[numdecals] = *opacity - distance / 10;
-
- if (decalopacity[numdecals > 0]) {
- placex = vertex[Triangles[i].vertex[0]].x;
- placez = vertex[Triangles[i].vertex[0]].z;
-
- decaltexcoords[numdecals][0][0] = (placex - where->x) / (*size) / 2 + .5;
- decaltexcoords[numdecals][0][1] = (placez - where->z) / (*size) / 2 + .5;
-
- decalvertex[numdecals][0].x = placex;
- decalvertex[numdecals][0].z = placez;
- decalvertex[numdecals][0].y = vertex[Triangles[i].vertex[0]].y;
-
-
- placex = vertex[Triangles[i].vertex[1]].x;
- placez = vertex[Triangles[i].vertex[1]].z;
-
- decaltexcoords[numdecals][1][0] = (placex - where->x) / (*size) / 2 + .5;
- decaltexcoords[numdecals][1][1] = (placez - where->z) / (*size) / 2 + .5;
-
- decalvertex[numdecals][1].x = placex;
- decalvertex[numdecals][1].z = placez;
- decalvertex[numdecals][1].y = vertex[Triangles[i].vertex[1]].y;
-
-
- placex = vertex[Triangles[i].vertex[2]].x;
- placez = vertex[Triangles[i].vertex[2]].z;
-
- decaltexcoords[numdecals][2][0] = (placex - where->x) / (*size) / 2 + .5;
- decaltexcoords[numdecals][2][1] = (placez - where->z) / (*size) / 2 + .5;
-
- decalvertex[numdecals][2].x = placex;
- decalvertex[numdecals][2].z = placez;
- decalvertex[numdecals][2].y = vertex[Triangles[i].vertex[2]].y;
-
- if (!(decaltexcoords[numdecals][0][0] < 0 && decaltexcoords[numdecals][1][0] < 0 && decaltexcoords[numdecals][2][0] < 0))
- if (!(decaltexcoords[numdecals][0][1] < 0 && decaltexcoords[numdecals][1][1] < 0 && decaltexcoords[numdecals][2][1] < 0))
- if (!(decaltexcoords[numdecals][0][0] > 1 && decaltexcoords[numdecals][1][0] > 1 && decaltexcoords[numdecals][2][0] > 1))
- if (!(decaltexcoords[numdecals][0][1] > 1 && decaltexcoords[numdecals][1][1] > 1 && decaltexcoords[numdecals][2][1] > 1)) {
- if (decalrotation[numdecals]) {
- for (j = 0; j < 3; j++) {
+ for (unsigned int i = 0; i < Triangles.size(); i++) {
+ if (Triangles[i].facenormal.y < -.1 && (vertex[Triangles[i].vertex[0]].y < where->y || vertex[Triangles[i].vertex[1]].y < where->y || vertex[Triangles[i].vertex[2]].y < where->y)) {
+ distance = abs(((Triangles[i].facenormal.x * where->x) + (Triangles[i].facenormal.y * where->y) + (Triangles[i].facenormal.z * where->z) - ((Triangles[i].facenormal.x * vertex[Triangles[i].vertex[0]].x) + (Triangles[i].facenormal.y * vertex[Triangles[i].vertex[0]].y) + (Triangles[i].facenormal.z * vertex[Triangles[i].vertex[0]].z))) / Triangles[i].facenormal.y);
+
+ if (*opacity - distance / 10 > 0) {
+ Decal decal(*where, atype, *opacity - distance / 10, *rotation, *size, *this, i, 0);
+
+ if (!(decal.texcoords[0][0] < 0 && decal.texcoords[1][0] < 0 && decal.texcoords[2][0] < 0))
+ if (!(decal.texcoords[0][1] < 0 && decal.texcoords[1][1] < 0 && decal.texcoords[2][1] < 0))
+ if (!(decal.texcoords[0][0] > 1 && decal.texcoords[1][0] > 1 && decal.texcoords[2][0] > 1))
+ if (!(decal.texcoords[0][1] > 1 && decal.texcoords[1][1] > 1 && decal.texcoords[2][1] > 1)) {
+ if (decal.rotation) {
+ for (int j = 0; j < 3; j++) {