X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGraphic%2FDecal.cpp;h=0857befe22c46ab4bec14b89d9844188ffd530ee;hb=afdb97f1c3e430801a1fd0c1b04a8a2102e8f1ac;hp=a535dee287111b5445cd31c69544da67a0a49e86;hpb=e60cbd7add6123d81b3c35543296449b5d02cbaa;p=lugaru.git diff --git a/Source/Graphic/Decal.cpp b/Source/Graphic/Decal.cpp index a535dee..0857bef 100644 --- a/Source/Graphic/Decal.cpp +++ b/Source/Graphic/Decal.cpp @@ -21,10 +21,11 @@ along with Lugaru. If not, see . #include "Graphic/Decal.hpp" #include "Environment/Terrain.hpp" +#include "Graphic/Models.hpp" Decal::Decal() : position(), - type(0), + type(shadowdecal), opacity(0), rotation(0), alivetime(0), @@ -32,7 +33,7 @@ Decal::Decal() : { } -Decal::Decal(XYZ _position, int _type, float _opacity, float _rotation, float _brightness, int whichx, int whichy, float size, const Terrain& terrain, bool first) : +Decal::Decal(XYZ _position, decal_type _type, float _opacity, float _rotation, float _brightness, int whichx, int whichy, float size, const Terrain& terrain, bool first) : position(_position), type(_type), opacity(_opacity), @@ -93,3 +94,111 @@ Decal::Decal(XYZ _position, int _type, float _opacity, float _rotation, float _b } } } + +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; + } +}