#pragma once

class cChunk;
class cChunkMap;
class cChunkGenerator
{
public:
	cChunkGenerator( cChunkMap* a_pChunkMap );
	~cChunkGenerator();

	void GenerateChunk( int a_X, int a_Z );

	cChunk* GetCurrentlyGenerating(); // WARNING - Be sure to Lock() before calling, and Unlock() after done with the chunk!
	void Lock();
	void Unlock();
private:
	static void GenerateThread( void* a_Params );

	cChunkMap* m_pChunkMap;

	struct sChunkGeneratorState;
	sChunkGeneratorState* m_pState;
};