]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/utility.cpp
Merge branch 'view_bobbing_and_vielded_tool'
[dragonfireclient.git] / src / utility.cpp
index 0721100cb98e845871e033aaf5920fcb9a624a14..3c6c2f286ea7f05800f976d9c5a8ef0a5142b786 100644 (file)
@@ -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;
        }