5 #include <condition_variable> 6 #include "BlockReadWriteLock.h" 7 #include "IAttributeFields.h" 12 class BlockWorldClient;
24 ATTRIBUTE_METHOD1(
ChunkVertexBuilderManager, GetMaxChunksToUploadPerTick_s,
int*) { *p1 = cls->GetMaxChunksToUploadPerTick();
return S_OK; }
25 ATTRIBUTE_METHOD1(
ChunkVertexBuilderManager, SetMaxChunksToUploadPerTick_s,
int) { cls->SetMaxChunksToUploadPerTick(p1);
return S_OK; }
27 ATTRIBUTE_METHOD1(
ChunkVertexBuilderManager, GetMaxBytesToUploadPerTick_s,
int*) { *p1 = cls->GetMaxBytesToUploadPerTick();
return S_OK; }
28 ATTRIBUTE_METHOD1(
ChunkVertexBuilderManager, SetMaxBytesToUploadPerTick_s,
int) { cls->SetMaxBytesToUploadPerTick(p1);
return S_OK; }
30 ATTRIBUTE_METHOD1(
ChunkVertexBuilderManager, GetPendingChunksCount_s,
int*) { *p1 = cls->GetPendingChunksCount();
return S_OK; }
51 int GetPendingChunksCount();
53 void StartChunkBuildThread(
CBlockWorld* pBlockWorld);
55 int GetMaxChunksToUploadPerTick()
const;
56 void SetMaxChunksToUploadPerTick(
int val);
57 int GetMaxBytesToUploadPerTick()
const;
58 void SetMaxBytesToUploadPerTick(
int val);
61 void ChunkBuildThreadProc();
65 std::vector<RenderableChunk*> m_pendingChunks;
67 std::vector<RenderableChunk*> m_pendingUploadChunks;
69 std::mutex m_queueMutex;
70 std::thread m_chunk_build_thread;
71 std::condition_variable m_chunk_request_signal;
72 bool m_bChunkThreadStarted;
74 int m_nMaxPendingChunks;
75 int m_nMaxUploadingChunks;
76 int m_nMaxChunksToUploadPerTick;
77 int m_nMaxBytesToUploadPerTick;
an attribute class is a collection of attribute fields.
Definition: AttributeClass.h:10
simple scoped read lock function
Definition: BlockReadWriteLock.h:123
different physics engine has different winding order.
Definition: EventBinding.h:32
int ProcessOneChunk(Scoped_ReadLock< BlockReadWriteLock > &ReadWriteLock_)
call this function in worker thread every tick to process some chunks.
Definition: ChunkVertexBuilderManager.cpp:236
Definition: RenderableChunk.h:17
for filling chunk vertex in a different thread.
Definition: ChunkVertexBuilderManager.h:15
base class for an instance of block world
Definition: BlockWorld.h:35
A common interface for all classes implementing IAttributeFields By implementing this class's virtual...
Definition: IAttributeFields.h:59
void RemovePendingChunks(std::set< RenderableChunk *> *pExcludeList)
remove all pending chunks except for those in exclude list.
Definition: ChunkVertexBuilderManager.cpp:62
bool AddChunk(RenderableChunk *pChunk)
only return true, if chunk is added.
Definition: ChunkVertexBuilderManager.cpp:41
this is a singleton client side block world instance.
Definition: BlockWorldClient.h:15
void UploadPendingChunksToDevice()
this function should be called from the render thread to upload all pending chunks.
Definition: ChunkVertexBuilderManager.cpp:110
virtual int InstallFields(CAttributeClass *pClass, bool bOverride)
this class should be implemented if one wants to add new attribute.
Definition: ChunkVertexBuilderManager.cpp:335