@@ -122,14 +122,17 @@ void ClientMap::updateDrawList()
122
122
}
123
123
m_drawlist.clear ();
124
124
125
- v3f camera_position = m_camera_position;
126
- v3f camera_direction = m_camera_direction;
125
+ const v3f camera_position = m_camera_position;
126
+ const v3f camera_direction = m_camera_direction;
127
+ const f32 camera_fov = m_camera_fov;
127
128
128
129
v3s16 cam_pos_nodes = floatToInt (camera_position, BS);
129
130
v3s16 p_blocks_min;
130
131
v3s16 p_blocks_max;
131
132
getBlocksInViewRange (cam_pos_nodes, &p_blocks_min, &p_blocks_max);
132
133
134
+ // Number of blocks currently loaded by the client
135
+ u32 blocks_loaded = 0 ;
133
136
// Number of blocks with mesh in rendering range
134
137
u32 blocks_in_range_with_mesh = 0 ;
135
138
// Number of blocks occlusion culled
@@ -154,6 +157,7 @@ void ClientMap::updateDrawList()
154
157
MapSector *sector = sector_it.second ;
155
158
v2s16 sp = sector->getPos ();
156
159
160
+ blocks_loaded += sector->size ();
157
161
if (!m_control.range_all ) {
158
162
if (sp.X < p_blocks_min.X || sp.X > p_blocks_max.X ||
159
163
sp.Y < p_blocks_min.Z || sp.Y > p_blocks_max.Z )
@@ -175,23 +179,20 @@ void ClientMap::updateDrawList()
175
179
if not seen on display
176
180
*/
177
181
178
- if (block->mesh )
182
+ if (block->mesh ) {
179
183
block->mesh ->updateCameraOffset (m_camera_offset);
184
+ } else {
185
+ // Ignore if mesh doesn't exist
186
+ continue ;
187
+ }
180
188
181
189
float range = 100000 * BS;
182
190
if (!m_control.range_all )
183
191
range = m_control.wanted_range * BS;
184
192
185
193
float d = 0.0 ;
186
194
if (!isBlockInSight (block->getPos (), camera_position,
187
- camera_direction, m_camera_fov, range, &d))
188
- continue ;
189
-
190
-
191
- /*
192
- Ignore if mesh doesn't exist
193
- */
194
- if (!block->mesh )
195
+ camera_direction, camera_fov, range, &d))
195
196
continue ;
196
197
197
198
blocks_in_range_with_mesh++;
@@ -222,6 +223,7 @@ void ClientMap::updateDrawList()
222
223
g_profiler->avg (" MapBlock meshes in range [#]" , blocks_in_range_with_mesh);
223
224
g_profiler->avg (" MapBlocks occlusion culled [#]" , blocks_occlusion_culled);
224
225
g_profiler->avg (" MapBlocks drawn [#]" , m_drawlist.size ());
226
+ g_profiler->avg (" MapBlocks loaded [#]" , blocks_loaded);
225
227
}
226
228
227
229
struct MeshBufList
@@ -287,13 +289,13 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
287
289
/*
288
290
Get animation parameters
289
291
*/
290
- float animation_time = m_client->getAnimationTime ();
291
- int crack = m_client->getCrackLevel ();
292
- u32 daynight_ratio = m_client->getEnv ().getDayNightRatio ();
292
+ const float animation_time = m_client->getAnimationTime ();
293
+ const int crack = m_client->getCrackLevel ();
294
+ const u32 daynight_ratio = m_client->getEnv ().getDayNightRatio ();
293
295
294
- v3f camera_position = m_camera_position;
295
- v3f camera_direction = m_camera_direction;
296
- f32 camera_fov = m_camera_fov;
296
+ const v3f camera_position = m_camera_position;
297
+ const v3f camera_direction = m_camera_direction;
298
+ const f32 camera_fov = m_camera_fov;
297
299
298
300
/*
299
301
Get all blocks and draw all visible ones
0 commit comments