diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-09-26 15:10:02 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-09-26 15:10:02 +0300 |
commit | 061d4b420206c67fb346d75fb6bcaf4aa8147ca8 (patch) | |
tree | 3f17c19e529baf3a6ae13479b7805fbe5cdf46ba /src/utility.cpp | |
parent | b9e680d06cf56b7c8b41a6b5626a3b94304adf42 (diff) | |
parent | 2ecd53ce09d8f20a06b057c24924a010fa2eefde (diff) | |
download | minetest-061d4b420206c67fb346d75fb6bcaf4aa8147ca8.tar.xz |
Merge branch 'view_bobbing_and_vielded_tool'
Diffstat (limited to 'src/utility.cpp')
-rw-r--r-- | src/utility.cpp | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/utility.cpp b/src/utility.cpp index 0721100cb..3c6c2f286 100644 --- a/src/utility.cpp +++ b/src/utility.cpp @@ -156,14 +156,33 @@ void mysrand(unsigned seed) next = seed; } +// 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; j<mc; j++) + { + scene::IMeshBuffer *buf = mesh->getMeshBuffer(j); + video::S3DVertex *vertices = (video::S3DVertex*)buf->getVertices(); + u16 vc = buf->getVertexCount(); + for(u16 i=0; i<vc; i++) + { + vertices[i].Color = color; + } + } +} + /* blockpos: position of block in block coordinates camera_pos: position of camera in nodes camera_dir: an unit vector pointing to camera direction range: viewing range */ -bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 range, - f32 *distance_ptr) +bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, + f32 camera_fov, f32 range, f32 *distance_ptr) { v3s16 blockpos_nodes = blockpos_b * MAP_BLOCKSIZE; @@ -211,8 +230,7 @@ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir, f32 range, 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.)) + if(cosangle < cos(camera_fov / 2)) return false; } |