#pragma once #pragma warning(push) #pragma warning(disable : 4311) #pragma warning(disable : 4312) BOOST_STATIC_WARNING(0); #define _SERVER # include # include # include <3DEngine/3DTerrain/3DTerrain.h> #undef _SERVER #pragma warning(pop) #include "3DEngineWrapperT.h" ////////////////////////////////////////////////////////////////////////// // struct EngineInstances { public: EngineInstances() : m_hDll3DTerrain(NULL), m_pCLoadHelper(NULL), m_fnContactTerrain(NULL) {} ~EngineInstances() {} public: inline HINSTANCE& HANDLEofENGINE() { return m_hDll3DTerrain; } inline CLoadHelper*& HANDLEofLOADHELPER() { return m_pCLoadHelper; } inline FUNC_ContactTerrain& HANDLEofTERRAIN() { return m_fnContactTerrain; } private: // HINSTANCE m_hDll3DTerrain; CLoadHelper* m_pCLoadHelper; FUNC_ContactTerrain m_fnContactTerrain; }; ////////////////////////////////////////////////////////////////////////// // class WiseMapInfo; class EngineInterface { ////////////////////////////////////////////////////////////////////////// // private: struct sTERRAIN_INFO { DWORD REF_COUNT; C3D_WORLD_BASE TERRAIN_HANDLE; }; struct sTERRAIN_SHARED_INFO { sTERRAIN_SHARED_INFO(sTERRAIN_INFO& rINFO) : TERRAIN_INFO_REF(rINFO) {} sTERRAIN_INFO& TERRAIN_INFO_REF; }; private: typedef STLX_MAP TERRAIN_HASH; typedef TERRAIN_HASH::iterator TERRAIN_HASH_IT; typedef STLX_MAP TERRAIN_SHARED_MAP; typedef TERRAIN_SHARED_MAP::iterator TERRAIN_SHARED_MAP_IT; ////////////////////////////////////////////////////////////////////////// // // public: void CreateTerrain(); TERRAIN_ID_T NewTokenHandleTerrain(MAPCODE fieldCode); void ReleaseTokenHandleTerrain(TERRAIN_ID_T tID); // public: C3D_WORLD_BASE GetInferfaceOfTerrain(TERRAIN_ID_T tID); ////////////////////////////////////////////////////////////////////////// // public: EngineInterface(EngineInstances& rINSTANCE); ~EngineInterface(); public: static EngineInterface& Instance(); public: static EngineInstances& RegisterInstance(HINSTANCE hDll3DTerrain, CLoadHelper* pCLoadHelper, FUNC_ContactTerrain fnContactTerrain); static void ReleaseInstance(); private: EngineInstances& m_rINSTANCE; TERRAIN_SHARED_MAP m_SHARED_TERRAIN; TERRAIN_HASH m_TERRAIN; TERRAIN_ID_T m_TokenIDforTerrain; CWzArchive* m_pArchive; };