1
0

Fixed a bug that no chunks were unloaded on the client. Now chunks are properly unloaded on the clients.

git-svn-id: http://mc-server.googlecode.com/svn/trunk@318 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
faketruth 2012-02-22 19:31:30 +00:00
parent 1cb756cbf2
commit 6015b59f13
2 changed files with 7 additions and 0 deletions

View File

@ -67,6 +67,7 @@
#include "packets/cPacket_PlayerListItem.h" #include "packets/cPacket_PlayerListItem.h"
#include "packets/cPacket_NamedEntitySpawn.h" #include "packets/cPacket_NamedEntitySpawn.h"
#include "packets/cPacket_MapChunk.h" #include "packets/cPacket_MapChunk.h"
#include "packets/cPacket_PreChunk.h"
@ -344,6 +345,7 @@ void cClientHandle::StreamChunks(void)
if ((RelX > VIEWDISTANCE) || (RelX < -VIEWDISTANCE) || (RelZ > VIEWDISTANCE) || (RelZ < -VIEWDISTANCE)) if ((RelX > VIEWDISTANCE) || (RelX < -VIEWDISTANCE) || (RelZ > VIEWDISTANCE) || (RelZ < -VIEWDISTANCE))
{ {
World->RemoveChunkClient(itr->m_ChunkX, itr->m_ChunkY, itr->m_ChunkZ, this); World->RemoveChunkClient(itr->m_ChunkX, itr->m_ChunkY, itr->m_ChunkZ, this);
Send( cPacket_PreChunk( itr->m_ChunkX, itr->m_ChunkZ, false ) );
itr = m_LoadedChunks.erase(itr); itr = m_LoadedChunks.erase(itr);
} }
else else

View File

@ -15,6 +15,11 @@ public:
, m_PosZ( 0 ) , m_PosZ( 0 )
, m_bLoad( false ) , m_bLoad( false )
{ m_PacketID = E_PRE_CHUNK; } { m_PacketID = E_PRE_CHUNK; }
cPacket_PreChunk( int a_PosX, int a_PosZ, bool a_bLoad )
: m_PosX( a_PosX )
, m_PosZ( a_PosZ )
, m_bLoad( a_bLoad )
{ m_PacketID = E_PRE_CHUNK; }
virtual cPacket* Clone() const { return new cPacket_PreChunk(*this); } virtual cPacket* Clone() const { return new cPacket_PreChunk(*this); }
virtual void Serialize(AString & a_Data) const override; virtual void Serialize(AString & a_Data) const override;