File tree 6 files changed +22
-2
lines changed
6 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -511,6 +511,10 @@ hud_hotbar_max_width (Maximum hotbar width) float 1.0
511
511
# Enables caching of facedir rotated meshes.
512
512
enable_mesh_cache (Mesh cache) bool false
513
513
514
+ # Delay between mesh updates on the client in ms. Increasing this will slow
515
+ # down the rate of mesh updates, thus reducing jitter on slower clients.
516
+ mesh_generation_interval (Mapblock mesh generation delay) int 0 0 50
517
+
514
518
# Enables minimap.
515
519
enable_minimap (Minimap) bool true
516
520
Original file line number Diff line number Diff line change @@ -594,6 +594,11 @@ enable_client_modding (Client modding) bool false
594
594
# type: bool
595
595
# enable_mesh_cache = false
596
596
597
+ # Delay between mesh updates on the client in ms. Increasing this will slow
598
+ # down the rate of mesh updates, thus reducing jitter on slower clients.
599
+ # type: int min: 0 max: 50
600
+ # mesh_generation_interval = 0
601
+
597
602
# Enables minimap.
598
603
# type: bool
599
604
# enable_minimap = true
Original file line number Diff line number Diff line change @@ -157,6 +157,12 @@ QueuedMeshUpdate *MeshUpdateQueue::pop()
157
157
MeshUpdateThread
158
158
*/
159
159
160
+ MeshUpdateThread::MeshUpdateThread () : UpdateThread(" Mesh" )
161
+ {
162
+ m_generation_interval = g_settings->getU16 (" mesh_generation_interval" );
163
+ m_generation_interval = rangelim (m_generation_interval, 0 , 50 );
164
+ }
165
+
160
166
void MeshUpdateThread::enqueueUpdate (v3s16 p, MeshMakeData *data,
161
167
bool ack_block_to_server, bool urgent)
162
168
{
@@ -168,7 +174,8 @@ void MeshUpdateThread::doUpdate()
168
174
{
169
175
QueuedMeshUpdate *q;
170
176
while ((q = m_queue_in.pop ())) {
171
-
177
+ if (m_generation_interval)
178
+ sleep_ms (m_generation_interval);
172
179
ScopeProfiler sp (g_profiler, " Client: Mesh making" );
173
180
174
181
MapBlockMesh *mesh_new = new MapBlockMesh (q->data , m_camera_offset);
Original file line number Diff line number Diff line change @@ -120,13 +120,14 @@ class MeshUpdateThread : public UpdateThread
120
120
{
121
121
private:
122
122
MeshUpdateQueue m_queue_in;
123
+ int m_generation_interval;
123
124
124
125
protected:
125
126
virtual void doUpdate ();
126
127
127
128
public:
128
129
129
- MeshUpdateThread () : UpdateThread( " Mesh " ) {}
130
+ MeshUpdateThread ();
130
131
131
132
void enqueueUpdate (v3s16 p, MeshMakeData *data,
132
133
bool ack_block_to_server, bool urgent);
Original file line number Diff line number Diff line change @@ -38,6 +38,7 @@ void set_default_settings(Settings *settings)
38
38
settings->setDefault (" enable_sound" , " true" );
39
39
settings->setDefault (" sound_volume" , " 0.8" );
40
40
settings->setDefault (" enable_mesh_cache" , " false" );
41
+ settings->setDefault (" mesh_generation_interval" , " 0" );
41
42
settings->setDefault (" enable_vbo" , " true" );
42
43
settings->setDefault (" free_move" , " false" );
43
44
settings->setDefault (" fast_move" , " false" );
Original file line number Diff line number Diff line change @@ -245,6 +245,8 @@ fake_function() {
245
245
gettext (" Maximum proportion of current window to be used for hotbar.\n Useful if there's something to be displayed right or left of hotbar." );
246
246
gettext (" Mesh cache" );
247
247
gettext (" Enables caching of facedir rotated meshes." );
248
+ gettext (" Mapblock mesh generation delay" );
249
+ gettext (" Delay between mesh updates on the client in ms. Increasing this will slow\n down the rate of mesh updates, thus reducing jitter on slower clients." );
248
250
gettext (" Minimap" );
249
251
gettext (" Enables minimap." );
250
252
gettext (" Round minimap" );
You can’t perform that action at this time.
0 commit comments