9#include <unordered_set>
81 bool addBlock(
Map *map,
v3s16 p,
bool ack_to_server,
bool urgent,
bool from_neighbor);
97 void clear(
bool finish =
false);
117 std::unique_ptr<MapBlockMesh>
mesh;
153 bool update_neighbors =
false);
178 std::vector<std::unique_ptr<MeshUpdateWorkerThread>>
m_workers;
Definition mapblock_mesh.h:177
Definition mesh_generator_thread.h:146
MeshUpdateManager(Client *client)
Definition mesh_generator_thread.cpp:292
void deferUpdate()
Definition mesh_generator_thread.cpp:381
void clearAllQueues(bool finish=false)
Definition mesh_generator_thread.cpp:355
bool isRunning()
Definition mesh_generator_thread.cpp:405
MeshUpdateQueue m_queue_in
Definition mesh_generator_thread.h:174
void stop()
Definition mesh_generator_thread.cpp:393
ResultQueue m_queue_out_urgent
Definition mesh_generator_thread.h:176
bool getNextResult(MeshUpdateResult &r)
Definition mesh_generator_thread.cpp:340
void updateBlock(Map *map, v3s16 p, bool ack_block_to_server, bool urgent, bool update_neighbors=false)
Definition mesh_generator_thread.cpp:309
void putResult(MeshUpdateResult &&r)
Definition mesh_generator_thread.cpp:332
ResultQueue m_queue_out
Definition mesh_generator_thread.h:175
void start()
Definition mesh_generator_thread.cpp:387
std::vector< std::unique_ptr< MeshUpdateWorkerThread > > m_workers
Definition mesh_generator_thread.h:178
void wait()
Definition mesh_generator_thread.cpp:399
MutexedQueue< MeshUpdateResult > ResultQueue
Definition mesh_generator_thread.h:170
Definition mesh_generator_thread.h:60
std::unordered_set< v3s16 > m_urgents
Definition mesh_generator_thread.h:102
~MeshUpdateQueue()
Definition mesh_generator_thread.cpp:97
bool addBlock(Map *map, v3s16 p, bool ack_to_server, bool urgent, bool from_neighbor)
Caches the block at p and its neighbors (if needed) and queues a mesh update for the block p.
Definition mesh_generator_thread.cpp:102
std::mutex m_mutex
Definition mesh_generator_thread.h:104
std::vector< QueuedMeshUpdate * > m_queue
Definition mesh_generator_thread.h:101
bool m_cache_enable_waving_water
Definition mesh_generator_thread.h:109
void done(v3s16 pos)
Definition mesh_generator_thread.cpp:199
void clear(bool finish=false)
Definition mesh_generator_thread.cpp:205
MeshUpdateQueue(Client *client)
Definition mesh_generator_thread.cpp:89
void fillDataFromMapBlocks(QueuedMeshUpdate *q)
Definition mesh_generator_thread.cpp:224
bool m_cache_smooth_lighting
Definition mesh_generator_thread.h:107
UpdateMode
Definition mesh_generator_thread.h:62
@ SKIP_UPDATE_IF_ALREADY_CACHED
Definition mesh_generator_thread.h:64
@ FORCE_UPDATE
Definition mesh_generator_thread.h:63
bool m_cache_enable_water_reflections
Definition mesh_generator_thread.h:108
size_t size()
Definition mesh_generator_thread.h:90
QueuedMeshUpdate * pop()
Definition mesh_generator_thread.cpp:171
std::unordered_set< v3s16 > m_inflight_blocks
Definition mesh_generator_thread.h:103
Client * m_client
Definition mesh_generator_thread.h:100
MeshUpdateManager * m_manager
Definition mesh_generator_thread.h:139
MeshUpdateQueue * m_queue_in
Definition mesh_generator_thread.h:138
Client * m_client
Definition mesh_generator_thread.h:137
int m_generation_interval
Definition mesh_generator_thread.h:142
MeshUpdateWorkerThread(Client *client, MeshUpdateQueue *queue_in, MeshUpdateManager *manager)
Definition mesh_generator_thread.cpp:250
virtual void doUpdate()
Definition mesh_generator_thread.cpp:257
Definition container.h:126
UpdateThread(const std::string &name)
Definition thread.h:177
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
std::lock_guard< std::mutex > MutexAutoLock
Definition mutex_auto_lock.h:31
Definition activeobjectmgr.cpp:11
Definition mapblock_mesh.h:34
Definition mesh_generator_thread.h:115
std::vector< MapBlock * > map_blocks
Definition mesh_generator_thread.h:121
bool urgent
Definition mesh_generator_thread.h:120
u8 solid_sides
Definition mesh_generator_thread.h:118
MeshUpdateResult()=default
v3s16 p
Definition mesh_generator_thread.h:116
std::vector< v3s16 > ack_list
Definition mesh_generator_thread.h:119
std::unique_ptr< MapBlockMesh > mesh
Definition mesh_generator_thread.h:117
Definition mesh_generator_thread.h:23
void dropBlocks()
Drop block references.
Definition mesh_generator_thread.cpp:63
QueuedMeshUpdate()=default
void retrieveBlocks(Map *map, u16 cell_size)
Get blocks needed for this mesh update from the map.
Definition mesh_generator_thread.cpp:24
~QueuedMeshUpdate()
Definition mesh_generator_thread.cpp:19
int crack_level
Definition mesh_generator_thread.h:26
v3s16 p
Definition mesh_generator_thread.h:24
std::vector< MapBlock * > map_blocks
Definition mesh_generator_thread.h:29
MeshMakeData * data
Definition mesh_generator_thread.h:28
std::vector< v3s16 > ack_list
Definition mesh_generator_thread.h:25
bool urgent
Definition mesh_generator_thread.h:30
v3s16 crack_pos
Definition mesh_generator_thread.h:27
bool checkSkip(u16 cell_size)
Check if the blocks that would comprise the mesh are all air, so the update can be skipped entirely.
Definition mesh_generator_thread.cpp:49
static std::string p(std::string path)
Definition test_filesys.cpp:66