#ifndef __GDTERRAINGENCORE_H__ #define __GDTERRAINGENCORE_H__ #include #include #include namespace godot { class TerrainGeneratorCore : private geoworld::ISynthesisSessionListener { private: geoworld::SynthesisSession * sess; geoworld::GeoMorphRegistry * geoMorphRegistry; virtual void onRaster( geoworld::GeoWorld * const pWorld ); virtual void onRejects( geoworld::GeoWorld * const pWorld, const geoworld::MorphList & rejects ); virtual void onInitMorph( geoworld::GeoWorld * const pWorld, const geoworld::GeoMorph * pMorph ); virtual void onGenerate( geoworld::GeoWorld * const pWorld ); virtual void onDoMorph (geoworld::GeoWorld * const pWorld, mars::ptr< geoworld::GeoMorph > & pGM, const size_t i, const size_t nTotal); virtual void onCreateMiddleTier (geoworld::GeoWorld * const pWorld, const std::string & sFileName); virtual void onGenerateMiddleTier (geoworld::GeoWorld * const pWorld, const geoworld::PagedGeoWorld * const pPgWorld); virtual void onPrepareMorphs( geoworld::GeoWorld * const pWorld, const geoworld::MorphList & morphs); virtual void onPrepareMorphs2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass, const geoworld::MorphList & morphs); virtual void onInitMorph2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass, const geoworld::GeoMorph * pMorph ); virtual void onDoMorph2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass, mars::ptr< geoworld::GeoMorph > & pGM, const size_t i, const size_t nTotal ); virtual void onRaster2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass ); virtual void onPass2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass ); virtual void onGenerate2( geoworld::PagedGeoWorld * const pPgWorld ); virtual void onRejects2( geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass, const geoworld::MorphList & rejects ); virtual void onGenerateGeoHostLayers (geoworld::GeoWorld * const pWorld, geoworld::DepositSynthesizer * const pDepSynth); virtual void onSpawnMinerals (geoworld::GeoWorld * const pWorld, geoworld::DepositSynthesizer * const pDepSynth); virtual void onSpawnMinerals2 (geoworld::PagedGeoWorld * const pPgWorld, const unsigned short nPass, geoworld::DepositSynthesizer * const pDepSynth); public: TerrainGeneratorCore(const boost::filesystem::path path, geoworld::GeoMorphRegistry * geoMorphRegistry); void generate(const boost::filesystem::path outputFile, const unsigned short nTileDim, const unsigned long nWorldWidth, const unsigned long nWorldHeight, const unsigned short nWorldDepth); ~TerrainGeneratorCore(); }; } #endif