X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futility.cpp;h=7ffbe716066cf467df04d392687494a1e3845313;hb=013921782b1a8506f4aee1d1be0312002eddd575;hp=0721100cb98e845871e033aaf5920fcb9a624a14;hpb=033ae0dcaecc37fee487e44896a0c0fb4c844e4e;p=oweals%2Fminetest.git diff --git a/src/utility.cpp b/src/utility.cpp index 0721100cb..7ffbe7160 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "gettime.h" #include "sha1.h" #include "base64.h" +#include "log.h" TimeTaker::TimeTaker(const char *name, u32 *result) { @@ -47,7 +48,7 @@ u32 TimeTaker::stop(bool quiet) else { if(quiet == false) - std::cout< MYRAND_MAX) + { + errorstream<<"WARNING: myrand_range: max-min > MYRAND_MAX"< max) + { + assert(0); + return max; + } + return (myrand()%(max-min+1))+min; +} + +#ifndef SERVER +// Sets the color of all vertices in the mesh +void setMeshVerticesColor(scene::IMesh* mesh, video::SColor& color) +{ + if(mesh == NULL) + return; + + u16 mc = mesh->getMeshBufferCount(); + for(u16 j=0; jgetMeshBuffer(j); + video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); + u16 vc = buf->getVertexCount(); + for(u16 i=0; i block_max_radius * 1.5) - { - // Cosine of the angle between the camera direction - // and the block direction (camera_dir is an unit vector) - f32 cosangle = dforward / d; - - // Compensate for the size of the block - // (as the block has to be shown even if it's a bit off FOV) - // This is an estimate. - cosangle += block_max_radius / dforward; - - // If block is not in the field of view, skip it - //if(cosangle < cos(FOV_ANGLE/2)) - if(cosangle < cos(FOV_ANGLE/2. * 4./3.)) - return false; - } + if(d < block_max_radius) + return true; + + // Cosine of the angle between the camera direction + // and the block direction (camera_dir is an unit vector) + f32 cosangle = dforward / d; + + // Compensate for the size of the block + // (as the block has to be shown even if it's a bit off FOV) + // This is an estimate, plus an arbitary factor + cosangle += block_max_radius / d * 0.5; + + // If block is not in the field of view, skip it + if(cosangle < cos(camera_fov / 2)) + return false; return true; }