85 lines
2.6 KiB
C++
85 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#pragma warning(push)
|
|
#pragma warning(disable : 4311)
|
|
#pragma warning(disable : 4312)
|
|
|
|
BOOST_STATIC_WARNING(0);
|
|
#define _SERVER
|
|
# include <ProgramCommon/WzDataType.h>
|
|
# include <ProgramCommon/WzHashTable.h>
|
|
# 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
|
|
{
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// <TYPE DEFINITIONs>
|
|
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<MAPCODE, sTERRAIN_INFO> TERRAIN_HASH;
|
|
typedef TERRAIN_HASH::iterator TERRAIN_HASH_IT;
|
|
typedef STLX_MAP<TERRAIN_ID_T, sTERRAIN_SHARED_INFO> TERRAIN_SHARED_MAP;
|
|
typedef TERRAIN_SHARED_MAP::iterator TERRAIN_SHARED_MAP_IT;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// <ENGINE CONTROL INTERFACEs>
|
|
// <INSTANCEs>
|
|
public: void CreateTerrain();
|
|
TERRAIN_ID_T NewTokenHandleTerrain(MAPCODE fieldCode);
|
|
void ReleaseTokenHandleTerrain(TERRAIN_ID_T tID);
|
|
// <HANDLEs>
|
|
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;
|
|
};
|
|
|