Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
MeshUpdateQueue Class Reference

#include <mesh_generator_thread.h>

+ Collaboration diagram for MeshUpdateQueue:

Public Member Functions

 MeshUpdateQueue (Client *client)
 
 ~MeshUpdateQueue ()
 
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.
 
QueuedMeshUpdatepop ()
 
void done (v3s16 pos)
 
size_t size ()
 

Private Types

enum  UpdateMode { FORCE_UPDATE , SKIP_UPDATE_IF_ALREADY_CACHED }
 

Private Member Functions

void fillDataFromMapBlocks (QueuedMeshUpdate *q)
 

Private Attributes

Clientm_client
 
std::vector< QueuedMeshUpdate * > m_queue
 
std::unordered_set< v3s16m_urgents
 
std::unordered_set< v3s16m_inflight_blocks
 
std::mutex m_mutex
 
bool m_cache_smooth_lighting
 
bool m_cache_enable_water_reflections
 

Member Enumeration Documentation

◆ UpdateMode

Enumerator
FORCE_UPDATE 
SKIP_UPDATE_IF_ALREADY_CACHED 

Constructor & Destructor Documentation

◆ MeshUpdateQueue()

MeshUpdateQueue::MeshUpdateQueue ( Client * client)

References g_settings, Settings::getBool(), m_cache_enable_water_reflections, and m_cache_smooth_lighting.

+ Here is the call graph for this function:

◆ ~MeshUpdateQueue()

MeshUpdateQueue::~MeshUpdateQueue ( )

References m_mutex, and m_queue.

Member Function Documentation

◆ addBlock()

bool MeshUpdateQueue::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.

Parameters
mapMap
pblock position
ack_to_serverShould be acked to server when done?
urgetHigh-priority?
from_neighborwas this update only necessary due to a neighbor change?

References Profiler::add(), MeshGrid::cell_size, g_profiler, Map::getBlockNoCreateNoEx(), Client::getCrackLevel(), Client::getCrackPos(), Client::getMeshGrid(), MeshGrid::getMeshPos(), m_client, m_mutex, m_queue, m_urgents, p(), and QueuedMeshUpdate::p.

Referenced by MeshUpdateManager::updateBlock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ done()

void MeshUpdateQueue::done ( v3s16 pos)

References m_inflight_blocks, and m_mutex.

Referenced by MeshUpdateWorkerThread::doUpdate().

+ Here is the caller graph for this function:

◆ fillDataFromMapBlocks()

void MeshUpdateQueue::fillDataFromMapBlocks ( QueuedMeshUpdate * q)
private

References QueuedMeshUpdate::crack_level, QueuedMeshUpdate::crack_pos, QueuedMeshUpdate::data, MeshMakeData::fillBlockDataBegin(), Client::getMeshGrid(), Client::getMinimap(), m_cache_enable_water_reflections, m_cache_smooth_lighting, m_client, MeshMakeData::m_enable_water_reflections, MeshMakeData::m_generate_minimap, MeshMakeData::m_smooth_lighting, MeshMakeData::m_vmanip, QueuedMeshUpdate::map_blocks, MAP_BLOCKSIZE, IGameDef::ndef(), QueuedMeshUpdate::p, and MeshMakeData::setCrack().

Referenced by pop().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ pop()

QueuedMeshUpdate * MeshUpdateQueue::pop ( )

References fillDataFromMapBlocks(), m_inflight_blocks, m_mutex, m_queue, m_urgents, and QueuedMeshUpdate::p.

Referenced by MeshUpdateWorkerThread::doUpdate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ size()

size_t MeshUpdateQueue::size ( )
inline

References m_mutex, and m_queue.

Member Data Documentation

◆ m_cache_enable_water_reflections

bool MeshUpdateQueue::m_cache_enable_water_reflections
private

◆ m_cache_smooth_lighting

bool MeshUpdateQueue::m_cache_smooth_lighting
private

◆ m_client

Client* MeshUpdateQueue::m_client
private

Referenced by addBlock(), and fillDataFromMapBlocks().

◆ m_inflight_blocks

std::unordered_set<v3s16> MeshUpdateQueue::m_inflight_blocks
private

Referenced by done(), and pop().

◆ m_mutex

std::mutex MeshUpdateQueue::m_mutex
private

◆ m_queue

std::vector<QueuedMeshUpdate *> MeshUpdateQueue::m_queue
private

Referenced by ~MeshUpdateQueue(), addBlock(), pop(), and size().

◆ m_urgents

std::unordered_set<v3s16> MeshUpdateQueue::m_urgents
private

Referenced by addBlock(), and pop().


The documentation for this class was generated from the following files: