1
0

Implemented Allocation Pool use by cChunkData

This commit is contained in:
Tycho
2014-05-23 17:18:11 +01:00
parent 6991c2dd84
commit 8be3a8f7dc
11 changed files with 125 additions and 45 deletions

View File

@@ -347,7 +347,8 @@ private:
class cChunkLayer
{
public:
cChunkLayer(int a_LayerX, int a_LayerZ, cChunkMap * a_Parent);
cChunkLayer(int a_LayerX, int a_LayerZ, cChunkMap * a_Parent,
cAllocationPool<cChunkData::sChunkSection,1600>& a_Pool);
~cChunkLayer();
/** Always returns an assigned chunkptr, but the chunk needn't be valid (loaded / generated) - callers must check */
@@ -391,6 +392,16 @@ private:
int m_LayerZ;
cChunkMap * m_Parent;
int m_NumChunksLoaded;
cAllocationPool<cChunkData::sChunkSection,1600> & m_Pool;
};
class cStarvationCallbacks
: public cAllocationPool<cChunkData::sChunkSection,1600>::cStarvationCallbacks
{
virtual void OnStartingUsingBuffer() {}
virtual void OnStopUsingBuffer() {}
virtual void OnBufferEmpty() {}
};
typedef std::list<cChunkLayer *> cChunkLayerList;
@@ -423,6 +434,8 @@ private:
/** The cChunkStay descendants that are currently enabled in this chunkmap */
cChunkStays m_ChunkStays;
cAllocationPool<cChunkData::sChunkSection,1600> m_Pool;
cChunkPtr GetChunk (int a_ChunkX, int a_ChunkY, int a_ChunkZ); // Also queues the chunk for loading / generating if not valid
cChunkPtr GetChunkNoGen (int a_ChunkX, int a_ChunkY, int a_ChunkZ); // Also queues the chunk for loading if not valid; doesn't generate
cChunkPtr GetChunkNoLoad(int a_ChunkX, int a_ChunkY, int a_ChunkZ); // Doesn't load, doesn't generate