diff --git a/src/tools/loader.cpp b/src/tools/loader.cpp index c38b425..39b7cc2 100644 --- a/src/tools/loader.cpp +++ b/src/tools/loader.cpp @@ -185,19 +185,20 @@ std::vector Loader::loadMesh(const std::string &filename){ currentMesh->addTriangle(nb_vertices, nb_vertices+1, nb_vertices+2); for(int i=0; i<3; ++i) { + int offset = i*3; if(norm.size() == 0) { if(tex.size() == 0) - currentMesh->addVertex(pos[tab[i]-1]); + currentMesh->addVertex(pos[tab[offset]-1]); else - currentMesh->addVertex(pos[tab[i]-1], tex[tab[i+1]-1]); + currentMesh->addVertex(pos[tab[offset]-1], tex[tab[offset+1]-1]); } else { if(tex.size() == 0) - currentMesh->addVertex(pos[tab[i]-1], norm[tab[i+2]-1]); + currentMesh->addVertex(pos[tab[offset]-1], norm[tab[offset+2]-1]); else - currentMesh->addVertex(pos[tab[i]-1], norm[tab[i+2]-1], tex[tab[i+1]-1]); + currentMesh->addVertex(pos[tab[offset]-1], norm[tab[offset+2]-1], tex[tab[offset+1]-1]); } } } @@ -246,6 +247,11 @@ std::vector Loader::loadMesh(const std::string &filename){ meshes.pop_back(); --i; } + else + { + Mesh* m = meshes[i]; + m->mergeVertices(); + } } return meshes; } diff --git a/src/tools/noise.cpp b/src/tools/noise.cpp index eb33832..985bfea 100644 --- a/src/tools/noise.cpp +++ b/src/tools/noise.cpp @@ -1,6 +1,51 @@ #include "noise.h" #include #include +#include + +void Random::init() +{ + std::srand(std::time(nullptr)); +} + +void Random::init(unsigned int seed) +{ + std::srand(seed); +} + + +int Random::rand(int min, int max) +{ + return std::rand(); +} + +long Random::rand(long min, long max) +{ + long val; + int * ptr = ((int*)&val); + ptr[0] = std::rand(); + ptr[1] = std::rand(); + long range = max-min; + val = (val % range); + return (val > 0 ? val : val + range) + min; +} + +float Random::rand(float min, float max) +{ + float val = float(std::rand()) / RAND_MAX; + return val*(max-min) + min; +} + +double Random::rand(double min, double max) +{ + double val; + int * ptr = ((int*)&val); + ptr[0] = std::rand(); + ptr[1] = std::rand(); + + return val*(max-min) + min; +} + Noise::Noise() { diff --git a/src/tools/noise.h b/src/tools/noise.h index e80f2a6..3579ea0 100644 --- a/src/tools/noise.h +++ b/src/tools/noise.h @@ -6,6 +6,18 @@ #define ARBITRARY_VALUE 12 // TODO : find an appropriate name +class Random +{ +public: + static void init(); + static void init(unsigned int seed); + + static int rand(int min, int max); + static long rand(long min, long max); + static float rand(float min, float max); + static double rand(double min, double max); +}; + class Noise { private: