64 lines
1.2 KiB
C
64 lines
1.2 KiB
C
|
|
||
|
// 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;
|
||
|
|
||
|
} ;
|
||
|
|
||
|
|
||
|
|
||
|
|