00001 #ifndef __TileLoader__ 00002 #define __TileLoader__ 00003 00004 #include "Windows.h" 00005 00006 #include <list> 00007 #include <map> 00008 00009 #include "Log.h" 00010 00011 00012 class LODManager; 00013 class TileData; 00014 class Tile; 00015 class Log; 00016 00017 00018 class TileLoader 00019 { 00020 public: 00021 HANDLE hUpdateEvent, hStopLoadingEvent; 00022 std::map <int, TileData> tilesLoaded; 00023 volatile bool active; 00024 int numTilesLoaded; 00025 00026 TileLoader(LODManager* lm); 00027 ~TileLoader(); 00028 void StartMainLoop(); 00029 void stop(); 00030 void join(); 00031 void CleanupTilesList(); 00032 Tile* FindTile(int lod, int x, int y); 00033 00034 private: 00035 LODManager* lodManager; 00036 HANDLE hLoaderThread; 00037 Log myLog; 00038 00039 static DWORD WINAPI TileLoaderThreadProxy(LPVOID iValue); 00040 void ThreadLoop(); 00041 bool LoadList(std::list <TileData>* lista); 00042 }; 00043 00044 #endif 00045 00046 00047