summaryrefslogtreecommitdiffstats
path: root/src/ChunkStay.h
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2014-02-10 22:47:10 +0100
committermadmaxoft <github@xoft.cz>2014-02-10 22:47:10 +0100
commit9cebc9157cf43ba639227b9d79b980b3613dda1e (patch)
tree9c61bbee8a94668703c316f1c300187d247093f9 /src/ChunkStay.h
parentcLuaState: Stack traces don't include ghost 0-th element. (diff)
downloadcuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar.gz
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar.bz2
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar.lz
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar.xz
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.tar.zst
cuberite-9cebc9157cf43ba639227b9d79b980b3613dda1e.zip
Diffstat (limited to 'src/ChunkStay.h')
-rw-r--r--src/ChunkStay.h27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/ChunkStay.h b/src/ChunkStay.h
index 1e9cd69e8..80b084aee 100644
--- a/src/ChunkStay.h
+++ b/src/ChunkStay.h
@@ -32,48 +32,42 @@ This class is abstract, the descendants are expected to provide the OnChunkAvail
the OnAllChunksAvailable() callback implementations. Note that those are called from the contexts of
different threads' - the caller, the Loader or the Generator thread.
*/
-// tolua_begin
class cChunkStay
{
public:
- // tolua_end
cChunkStay(void);
~cChunkStay();
- // tolua_begin
-
void Clear(void);
/** Adds a chunk to be locked from unloading.
To be used only while the ChunkStay object is not enabled. */
- void Add (int a_ChunkX, int a_ChunkZ);
+ void Add(int a_ChunkX, int a_ChunkZ);
/** Releases the chunk so that it's no longer locked from unloading.
To be used only while the ChunkStay object is not enabled. */
void Remove(int a_ChunkX, int a_ChunkZ);
- // tolua_end
-
/** Enables the ChunkStay on the specified chunkmap, causing it to load and generate chunks.
All the contained chunks are queued for loading / generating. */
void Enable (cChunkMap & a_ChunkMap);
- // tolua_begin
-
/** Disables the ChunkStay, the chunks are released and the ChunkStay
object can be edited with Add() and Remove() again*/
virtual void Disable(void);
- // tolua_end
-
/** Returns all the chunks that should be kept */
const cChunkCoordsVector & GetChunks(void) const { return m_Chunks; }
/** Called when a specific chunk become available. */
virtual void OnChunkAvailable(int a_ChunkX, int a_ChunkZ) = 0;
- /** Caled once all of the contained chunks are available. */
- virtual void OnAllChunksAvailable(void) = 0;
+ /** Caled once all of the contained chunks are available.
+ If returns true, the ChunkStay is automatically disabled by the ChunkMap; if it returns false, the ChunkStay is kept. */
+ virtual bool OnAllChunksAvailable(void) = 0;
+
+ /** Called by the ChunkMap when the ChunkStay is disabled. The object may choose to delete itself. */
+ virtual void OnDisabled(void) = 0;
protected:
@@ -92,9 +86,10 @@ protected:
/** Called by cChunkMap when a chunk is available, checks m_NumLoaded and triggers the appropriate callbacks.
- May be called for chunks outside this ChunkStay. */
- void ChunkAvailable(int a_ChunkX, int a_ChunkZ);
-} ; // tolua_export
+ May be called for chunks outside this ChunkStay.
+ Returns true if the ChunkStay is to be automatically disabled by the ChunkMap; returns false to keep the ChunkStay. */
+ bool ChunkAvailable(int a_ChunkX, int a_ChunkZ);
+} ;