summaryrefslogtreecommitdiffstats
path: root/source/ChunkSender.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/ChunkSender.h')
-rw-r--r--source/ChunkSender.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/source/ChunkSender.h b/source/ChunkSender.h
new file mode 100644
index 000000000..a56e797da
--- /dev/null
+++ b/source/ChunkSender.h
@@ -0,0 +1,63 @@
+
+// ChunkSender.h
+
+// Interfaces to the cChunkSender class representing the thread that waits for chunks becoming ready (loaded / generated) and sends them to clients
+
+
+
+
+
+#pragma once
+
+#include "cIsThread.h"
+#include "cChunk.h"
+#include "packets/cPacket.h"
+
+
+
+
+
+class cWorld;
+
+
+
+
+
+class cChunkSender:
+ public cIsThread,
+ public cChunkDataCallback
+{
+ typedef cIsThread super;
+public:
+ cChunkSender(void);
+ ~cChunkSender();
+
+ bool Start(cWorld * a_World);
+
+ void ChunkReady(int a_ChunkX, int a_ChunkY, int a_ChunkZ);
+
+protected:
+
+ cWorld * m_World;
+
+ cCriticalSection m_CS;
+ cChunkCoordsList m_ChunksReady;
+ cEvent m_Event; // Set when anything is added to m_ChunksReady
+
+ // Data about the chunk that is being sent:
+ char m_BlockData[cChunk::c_BlockDataSize];
+ PacketList m_Packets; // Accumulator for the entity-packets to send
+
+ // cIsThread override:
+ virtual void Execute(void) override;
+
+ // cChunkDataCallback overrides:
+ virtual void BlockData(const char * a_Data) override;
+ virtual void Entity(cEntity * a_Entity) override;
+ virtual void BlockEntity(cBlockEntity * a_Entity) override;
+
+} ;
+
+
+
+