Files
2022-10-26 12:25:11 +08:00

88 lines
5.0 KiB
C++

#pragma once
//////////////////////////////////////////////////////////////////////////
//
typedef DWORD TERRAIN_ID_T;
#define INVALID_TERRAIN_ID_VALUE ((TERRAIN_ID_T)-1)
//////////////////////////////////////////////////////////////////////////
// 3D Engine 객체 인터페이스를 그대로 사용하지 않기 위함 (& Filtering)
class C3D_WORLD_BASE : Delegator<CWorldBase>
{
public: C3D_WORLD_BASE() : Delegator<CWorldBase>(NULL) {}
C3D_WORLD_BASE(CWorldBase* pBase) : Delegator<CWorldBase>(pBase) {}
~C3D_WORLD_BASE() {}
public:
//< Tile 정보 얻기
WzOctIndex GetTileOctIndex(INT iTile) { return REFERENCE()->GetTileOctIndex(iTile); }
//< 메쉬와 연결된 타일 찾기
INT GetTileForTerrainMesh(INT iTerrainMesh) { return REFERENCE()->GetTileForTerrainMesh(iTerrainMesh); }
//< 3D 좌표를 줘서 초기화
BOOL PathExp_Reset(CPathExplorer *ppe, WzVector wvPos, INT iTile = -1) { return REFERENCE()->PathExp_Reset(ppe, wvPos, iTile); }
//< 3D 좌표를 줘서 초기화 (포인터 형)
BOOL PathExp_Reset(CPathExplorer *ppe, WzVector *pwvPos, INT iTile = -1) { return REFERENCE()->PathExp_Reset(ppe, pwvPos, iTile); }
//< 길 찾기
ENUM_FINDPATH_RESULT PathExp_FindPath(CPathExplorer *ppe, WzVector wvDest, INT iDestTile, WORD wAttribute = (PTA_ONLY_JUMP | PTA_NO_WALK), INT iSeekNode = MAX_NODE_FOR_PATHFIND)
{ return REFERENCE()->PathExp_FindPath(ppe, wvDest, iDestTile, wAttribute, iSeekNode); }
void PathExp_FindPath_Profiler(CPathExplorer *ppe, WzVector wvDest, INT iDestTile, WORD wAttribute = (PTA_ONLY_JUMP | PTA_NO_WALK), INT iSeekNode = MAX_NODE_FOR_PATHFIND, DWORD* pdwTick1 = 0, DWORD* pdwTick2 = 0)
{ return REFERENCE()->PathExp_FindPath_Profiler(ppe, wvDest, iDestTile, wAttribute, iSeekNode, pdwTick1, pdwTick2); }; /// 성능 테스트 하기 위한 함수.
//< 경로 지정
BOOL PathExp_SetPath(CPathExplorer *ppe, WzVector *pwvDest, INT *pTileRoute, INT iNumTileRoute)
{ return REFERENCE()->PathExp_SetPath(ppe, pwvDest, pTileRoute, iNumTileRoute); }
//< 길 찾기 진행 (좌표 이동이 있었으면 TRUE)
BOOL PathExp_Progress(CPathExplorer *ppe, float fMove, WzPathFindEvent *pEvent = NULL, ENUM_CHECK_COLLISION eCC = ECC_NO)
{ return REFERENCE()->PathExp_Progress(ppe, fMove, pEvent, eCC); }
BOOL PathExp_Progress_Profiler(CPathExplorer *ppe, float fMove, WzPathFindEvent *pEvent = NULL, DWORD* pdwTick1 = 0,DWORD* pdwTick2 = 0)
{ return REFERENCE()->PathExp_Progress_Profiler(ppe, fMove, pEvent, pdwTick1, pdwTick2); }
//< 3D 좌표 상에 서 있을때 발 딛을 메쉬 얻기
INT PathExp_GetMeshToStand(WzVector wvPos, float *pfT, float fMeshTileDist = -1.0f, DWORD dwTerrainGroupOptionCheck = 0)
{ return REFERENCE()->PathExp_GetMeshToStand(wvPos, pfT, fMeshTileDist, dwTerrainGroupOptionCheck); }
#ifdef CLIENT_VISIBLE_OPERATION
//< 애니메이션 데이터에 의해 이동한 결과를 실제 길찾기 자표로 적용
void PathExp_ApplyMoveByAnimation(CPathExplorer *ppe, CWzUnitDraw *pUnitDraw)
{ return REFERENCE()->PathExp_ApplyMoveByAnimation(ppe, pUnitDraw); }
#endif
//< 특정 방향으로 특정 거리만큼 밀기
ENUM_FINDPATH_RESULT PathExp_Thrust(CPathExplorer *ppe, WzVector *pwvMoveDistance, WORD wAttribute = (PTA_ONLY_JUMP | PTA_NO_WALK))
{ return REFERENCE()->PathExp_Thrust(ppe, pwvMoveDistance, wAttribute); }
//BOOL LoadStaticCollision(const CHAR* pszFileName) const ;
BOOL SaveStaticCollision(const CHAR* pszFileName)// const
{ return REFERENCE()->SaveStaticCollision(pszFileName); }
// @name --- Tile 렌더링 관련/Picking
//< 길찾기 지형 출력
//void RenderPathTile(CDrawBase *pDraw, WORD wAttribute = 0, INT *piTiles = NULL, INT iNumTile = 0,BOOL bViewCollision = FALSE);
//{ return REFERENCE()->SaveStaticCollision(pszFileName); }
//< 길찾기 지형 pick
//INT PickPathTile(WzRay *pwr, float *pfT = NULL, BOOL bCulling = TRUE)
//{ return REFERENCE()->PickPathTile(pwr, pfT, bCulling); }
//< Tile 내 random 위치 얻기
WzVector GetRandomPosInTile(INT iTile)
{ return REFERENCE()->GetRandomPosInTile(iTile); }
BOOL CorrectHeightByTile(INT iTile, WzVector *pwvPos)
{ return REFERENCE()->CorrectHeightByTile(iTile, pwvPos); }
//void RenderConvex(CDrawBase *pDraw, INT *piConvexes, INT iNumConvex, WzColor wcColor) = 0; ///< 컨벡스 출력
//{ return REFERENCE()->RenderConvex(pszFileName); }
// @name 특수 영역
public: BOOL AddSpecialArea(WzSpecialArea *pSpecialArea)
{ return REFERENCE()->AddSpecialArea(pSpecialArea); }
BOOL RemoveSpecialArea(WzID wiIdentity)
{ return REFERENCE()->RemoveSpecialArea(wiIdentity); }
BOOL RemoveSpecialAreaByIndex(int iIndex)
{ return REFERENCE()->RemoveSpecialAreaByIndex(iIndex); }
void RemoveAllSpecialArea()
{ return REFERENCE()->RemoveAllSpecialArea(); }
INT GetNumberOfSpecialArea()
{ return REFERENCE()->GetNumberOfSpecialArea(); }
WzSpecialArea* GetSpecialArea(WzID wiIdentity)
{ return REFERENCE()->GetSpecialArea(wiIdentity); }
WzSpecialArea* GetSpecialAreaByIndex(INT iIndex)
{ return REFERENCE()->GetSpecialAreaByIndex(iIndex); }
public: DWORD GetCheckSum()
{ return REFERENCE()->GetCheckSum(); }
};