From b902546863c4b17c6d8ff3f198713aba7a8bbadd Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Sun, 26 Feb 2012 16:15:09 +0000 Subject: New cChunkStay class for temporarily keeping chunks loaded even when then have no clients. For now unused, will be used by generator and lighting in the future. git-svn-id: http://mc-server.googlecode.com/svn/trunk@330 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cChunkMap.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'source/cChunkMap.h') diff --git a/source/cChunkMap.h b/source/cChunkMap.h index 7de26ee28..21e52c5a8 100644 --- a/source/cChunkMap.h +++ b/source/cChunkMap.h @@ -15,6 +15,7 @@ class cWorld; class cEntity; class cItem; class MTRand; +class cChunkStay; @@ -83,6 +84,9 @@ public: void TouchChunk(int a_ChunkX, int a_ChunkY, int a_ChunkZ); void UpdateSign(int a_X, int a_Y, int a_Z, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4); + + /// Marks (a_Stay == true) or unmarks (a_Stay == false) a chunk as non-unloadable; to be used only by cChunkStay! + void ChunkStay(int a_ChunkX, int a_ChunkY, int a_ChunkZ, bool a_Stay = true); void Tick( float a_Dt, MTRand & a_TickRand ); @@ -173,3 +177,29 @@ private: + +/** Makes chunks stay loaded until this object is cleared or destroyed +Works by setting internal flags in the cChunk that it should not be unloaded +*/ +class cChunkStay +{ +public: + cChunkStay(cWorld * a_World); + ~cChunkStay(); + + void Clear(void); + + void Add(int a_ChunkX, int a_ChunkY, int a_ChunkZ); + void Remove(int a_ChunkX, int a_ChunkY, int a_ChunkZ); + +protected: + + cWorld * m_World; + + cCriticalSection m_CS; + cChunkCoordsList m_Chunks; +} ; + + + + -- cgit v1.2.3