Skip to content

Commit 4d5177f

Browse files
numberZeroparamat
authored andcommittedMar 26, 2017
Add mesh generation delay
1 parent 22567d1 commit 4d5177f

File tree

6 files changed

+22
-2
lines changed

6 files changed

+22
-2
lines changed
 

Diff for: ‎builtin/settingtypes.txt

+4
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,10 @@ hud_hotbar_max_width (Maximum hotbar width) float 1.0
511511
# Enables caching of facedir rotated meshes.
512512
enable_mesh_cache (Mesh cache) bool false
513513

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+
514518
# Enables minimap.
515519
enable_minimap (Minimap) bool true
516520

Diff for: ‎minetest.conf.example

+5
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,11 @@ enable_client_modding (Client modding) bool false
594594
# type: bool
595595
# enable_mesh_cache = false
596596

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+
597602
# Enables minimap.
598603
# type: bool
599604
# enable_minimap = true

Diff for: ‎src/client.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,12 @@ QueuedMeshUpdate *MeshUpdateQueue::pop()
157157
MeshUpdateThread
158158
*/
159159

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+
160166
void MeshUpdateThread::enqueueUpdate(v3s16 p, MeshMakeData *data,
161167
bool ack_block_to_server, bool urgent)
162168
{
@@ -168,7 +174,8 @@ void MeshUpdateThread::doUpdate()
168174
{
169175
QueuedMeshUpdate *q;
170176
while ((q = m_queue_in.pop())) {
171-
177+
if (m_generation_interval)
178+
sleep_ms(m_generation_interval);
172179
ScopeProfiler sp(g_profiler, "Client: Mesh making");
173180

174181
MapBlockMesh *mesh_new = new MapBlockMesh(q->data, m_camera_offset);

Diff for: ‎src/client.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,14 @@ class MeshUpdateThread : public UpdateThread
120120
{
121121
private:
122122
MeshUpdateQueue m_queue_in;
123+
int m_generation_interval;
123124

124125
protected:
125126
virtual void doUpdate();
126127

127128
public:
128129

129-
MeshUpdateThread() : UpdateThread("Mesh") {}
130+
MeshUpdateThread();
130131

131132
void enqueueUpdate(v3s16 p, MeshMakeData *data,
132133
bool ack_block_to_server, bool urgent);

Diff for: ‎src/defaultsettings.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ void set_default_settings(Settings *settings)
3838
settings->setDefault("enable_sound", "true");
3939
settings->setDefault("sound_volume", "0.8");
4040
settings->setDefault("enable_mesh_cache", "false");
41+
settings->setDefault("mesh_generation_interval", "0");
4142
settings->setDefault("enable_vbo", "true");
4243
settings->setDefault("free_move", "false");
4344
settings->setDefault("fast_move", "false");

Diff for: ‎src/settings_translation_file.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ fake_function() {
245245
gettext("Maximum proportion of current window to be used for hotbar.\nUseful if there's something to be displayed right or left of hotbar.");
246246
gettext("Mesh cache");
247247
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\ndown the rate of mesh updates, thus reducing jitter on slower clients.");
248250
gettext("Minimap");
249251
gettext("Enables minimap.");
250252
gettext("Round minimap");

0 commit comments

Comments
 (0)
Please sign in to comment.