9#include <unordered_set>
81 bool addBlock(
Map *map,
v3s16 p,
bool ack_to_server,
bool urgent,
bool from_neighbor);
149 bool update_neighbors =
false);
169 std::vector<std::unique_ptr<MeshUpdateWorkerThread>>
m_workers;
Definition mapblock_mesh.h:176
Definition mesh_generator_thread.h:142
MeshUpdateManager(Client *client)
Definition mesh_generator_thread.cpp:276
void deferUpdate()
Definition mesh_generator_thread.cpp:339
void putResult(const MeshUpdateResult &r)
Definition mesh_generator_thread.cpp:316
bool isRunning()
Definition mesh_generator_thread.cpp:363
MeshUpdateQueue m_queue_in
Definition mesh_generator_thread.h:165
void stop()
Definition mesh_generator_thread.cpp:351
bool getNextResult(MeshUpdateResult &r)
Definition mesh_generator_thread.cpp:324
void updateBlock(Map *map, v3s16 p, bool ack_block_to_server, bool urgent, bool update_neighbors=false)
Definition mesh_generator_thread.cpp:293
MutexedQueue< MeshUpdateResult > m_queue_out_urgent
Definition mesh_generator_thread.h:167
void start()
Definition mesh_generator_thread.cpp:345
std::vector< std::unique_ptr< MeshUpdateWorkerThread > > m_workers
Definition mesh_generator_thread.h:169
MutexedQueue< MeshUpdateResult > m_queue_out
Definition mesh_generator_thread.h:166
void wait()
Definition mesh_generator_thread.cpp:357
Definition mesh_generator_thread.h:60
std::unordered_set< v3s16 > m_urgents
Definition mesh_generator_thread.h:99
~MeshUpdateQueue()
Definition mesh_generator_thread.cpp:96
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:106
std::mutex m_mutex
Definition mesh_generator_thread.h:101
std::vector< QueuedMeshUpdate * > m_queue
Definition mesh_generator_thread.h:98
void done(v3s16 pos)
Definition mesh_generator_thread.cpp:203
MeshUpdateQueue(Client *client)
Definition mesh_generator_thread.cpp:89
void fillDataFromMapBlocks(QueuedMeshUpdate *q)
Definition mesh_generator_thread.cpp:210
bool m_cache_smooth_lighting
Definition mesh_generator_thread.h:104
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:105
size_t size()
Definition mesh_generator_thread.h:90
QueuedMeshUpdate * pop()
Definition mesh_generator_thread.cpp:175
std::unordered_set< v3s16 > m_inflight_blocks
Definition mesh_generator_thread.h:100
Client * m_client
Definition mesh_generator_thread.h:97
Definition mesh_generator_thread.h:125
MeshUpdateManager * m_manager
Definition mesh_generator_thread.h:135
MeshUpdateQueue * m_queue_in
Definition mesh_generator_thread.h:134
Client * m_client
Definition mesh_generator_thread.h:133
int m_generation_interval
Definition mesh_generator_thread.h:138
MeshUpdateWorkerThread(Client *client, MeshUpdateQueue *queue_in, MeshUpdateManager *manager)
Definition mesh_generator_thread.cpp:234
virtual void doUpdate()
Definition mesh_generator_thread.cpp:241
Definition container.h:126
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:111
std::vector< MapBlock * > map_blocks
Definition mesh_generator_thread.h:117
bool urgent
Definition mesh_generator_thread.h:116
u8 solid_sides
Definition mesh_generator_thread.h:114
MeshUpdateResult()=default
v3s16 p
Definition mesh_generator_thread.h:112
std::vector< v3s16 > ack_list
Definition mesh_generator_thread.h:115
MapBlockMesh * mesh
Definition mesh_generator_thread.h:113
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:64