X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGraphic%2FDecal.cpp;h=0857befe22c46ab4bec14b89d9844188ffd530ee;hb=afdb97f1c3e430801a1fd0c1b04a8a2102e8f1ac;hp=de3388f75ff191ba08a1169e6896dac837a43648;hpb=4690d99d2bec493f809c7065b222eaf18f46df60;p=lugaru.git diff --git a/Source/Graphic/Decal.cpp b/Source/Graphic/Decal.cpp index de3388f..0857bef 100644 --- a/Source/Graphic/Decal.cpp +++ b/Source/Graphic/Decal.cpp @@ -21,6 +21,7 @@ along with Lugaru. If not, see . #include "Graphic/Decal.hpp" #include "Environment/Terrain.hpp" +#include "Graphic/Models.hpp" Decal::Decal() : position(), @@ -93,3 +94,111 @@ Decal::Decal(XYZ _position, decal_type _type, float _opacity, float _rotation, f } } } + +Decal::Decal(XYZ _position, decal_type _type, float _opacity, float _rotation, float size, const Model& model, int i, int which) : + position(_position), + type(_type), + opacity(_opacity), + rotation(_rotation), + alivetime(0), + brightness(0) +{ + float placex, placez; + if (which == 0) { + placex = model.getTriangleVertex(i, 0).x; + placez = model.getTriangleVertex(i, 0).z; + + texcoords[0][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[0][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[0].x = placex; + vertex[0].z = placez; + vertex[0].y = model.getTriangleVertex(i, 0).y; + + + placex = model.getTriangleVertex(i, 1).x; + placez = model.getTriangleVertex(i, 1).z; + + texcoords[1][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[1][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[1].x = placex; + vertex[1].z = placez; + vertex[1].y = model.getTriangleVertex(i, 1).y; + + + placex = model.getTriangleVertex(i, 2).x; + placez = model.getTriangleVertex(i, 2).z; + + texcoords[2][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[2][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[2].x = placex; + vertex[2].z = placez; + vertex[2].y = model.getTriangleVertex(i, 2).y; + } else if (which == 1) { + placex = model.getTriangleVertex(i, 0).y; + placez = model.getTriangleVertex(i, 0).z; + + texcoords[0][0] = (placex - position.y) / (size) / 2 + .5; + texcoords[0][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[0].x = model.getTriangleVertex(i, 0).x; + vertex[0].z = placez; + vertex[0].y = placex; + + + placex = model.getTriangleVertex(i, 1).y; + placez = model.getTriangleVertex(i, 1).z; + + texcoords[1][0] = (placex - position.y) / (size) / 2 + .5; + texcoords[1][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[1].x = model.getTriangleVertex(i, 1).x; + vertex[1].z = placez; + vertex[1].y = placex; + + + placex = model.getTriangleVertex(i, 2).y; + placez = model.getTriangleVertex(i, 2).z; + + texcoords[2][0] = (placex - position.y) / (size) / 2 + .5; + texcoords[2][1] = (placez - position.z) / (size) / 2 + .5; + + vertex[2].x = model.getTriangleVertex(i, 2).x; + vertex[2].z = placez; + vertex[2].y = placex; + } else { + placex = model.getTriangleVertex(i, 0).x; + placez = model.getTriangleVertex(i, 0).y; + + texcoords[0][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[0][1] = (placez - position.y) / (size) / 2 + .5; + + vertex[0].x = placex; + vertex[0].z = model.getTriangleVertex(i, 0).z; + vertex[0].y = placez; + + + placex = model.getTriangleVertex(i, 1).x; + placez = model.getTriangleVertex(i, 1).y; + + texcoords[1][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[1][1] = (placez - position.y) / (size) / 2 + .5; + + vertex[1].x = placex; + vertex[1].z = model.getTriangleVertex(i, 1).z; + vertex[1].y = placez; + + + placex = model.getTriangleVertex(i, 2).x; + placez = model.getTriangleVertex(i, 2).y; + + texcoords[2][0] = (placex - position.x) / (size) / 2 + .5; + texcoords[2][1] = (placez - position.y) / (size) / 2 + .5; + + vertex[2].x = placex; + vertex[2].z = model.getTriangleVertex(i, 2).z; + vertex[2].y = placez; + } +}