diff options
author | Novatux <nathanael.courant@laposte.net> | 2014-01-26 11:40:21 +0100 |
---|---|---|
committer | Novatux <nathanael.courant@laposte.net> | 2014-03-04 20:12:10 +0100 |
commit | 062de11b4cff30861dd4e9eb56f131d821f34b51 (patch) | |
tree | 37bdcbacb355abfe1f8091307222e430e58b78d8 /src/mapblock_mesh.cpp | |
parent | 8e15179e7d896851c6f5814fc6524c86b26ce2e3 (diff) | |
download | minetest-062de11b4cff30861dd4e9eb56f131d821f34b51.tar.gz minetest-062de11b4cff30861dd4e9eb56f131d821f34b51.tar.bz2 minetest-062de11b4cff30861dd4e9eb56f131d821f34b51.zip |
Fix rendering glitches when far from the center of the map
Diffstat (limited to 'src/mapblock_mesh.cpp')
-rw-r--r-- | src/mapblock_mesh.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mapblock_mesh.cpp b/src/mapblock_mesh.cpp index afea3dcce..ef05acbb7 100644 --- a/src/mapblock_mesh.cpp +++ b/src/mapblock_mesh.cpp @@ -1030,7 +1030,7 @@ static void updateAllFastFaceRows(MeshMakeData *data, MapBlockMesh */ -MapBlockMesh::MapBlockMesh(MeshMakeData *data): +MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset): m_mesh(new scene::SMesh()), m_gamedef(data->m_gamedef), m_animation_force_timer(0), // force initial animation @@ -1248,11 +1248,13 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data): &p.indices[0], p.indices.size()); } + m_camera_offset = camera_offset; + /* Do some stuff to the mesh */ - translateMesh(m_mesh, intToFloat(data->m_blockpos * MAP_BLOCKSIZE, BS)); + translateMesh(m_mesh, intToFloat(data->m_blockpos * MAP_BLOCKSIZE - camera_offset, BS)); if(m_mesh) { @@ -1415,6 +1417,14 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat return true; } +void MapBlockMesh::updateCameraOffset(v3s16 camera_offset) +{ + if (camera_offset != m_camera_offset) { + translateMesh(m_mesh, intToFloat(m_camera_offset-camera_offset, BS)); + m_camera_offset = camera_offset; + } +} + /* MeshCollector */ |