Heightmap.h
上传用户:hkb425
上传日期:2007-06-16
资源大小:34191k
文件大小:3k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // Heightmap.h: interface for the CHeightmap class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_HEIGHTMAP_H__5700AE61_401D_11D6_812C_5254AB37CDC9__INCLUDED_)
  5. #define AFX_HEIGHTMAP_H__5700AE61_401D_11D6_812C_5254AB37CDC9__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "structdef.h"
  10. #include "FrustumCull.h"
  11. #include "cmath.h"
  12. #define FOCUS_GROUND 0
  13. #define FOCUS_BODY   1 
  14. class CHeightmap  
  15. {
  16. public:
  17. CHeightmap();
  18. virtual ~CHeightmap();
  19. void UpdateHeightmap();
  20. float   GetHeight(VERTEX *WorldChecked);
  21. float   GetHeight(float Worldxpos,float Worldzpos);
  22. void    GetFocusPos();
  23. bool    CollideCheck(VERTEX startPos,VERTEX endPos,float step);
  24.     bool    CollideTreeBody(VERTEX *check);
  25.     bool    CollideBuilding(VERTEX *oldPos,VERTEX *newPos);
  26. bool    IsInFrustum(VERTEX *checked);
  27. bool    IsInFrustum(float x,float z);
  28. bool    IsInFrustum(BOUNDARY_3D *pBoundary);
  29.     POINT   ConvertToMovemap(VERTEX pos);
  30. VERTEX  ConvertToWorld(int movemapXPos,int movemapZPos);
  31. POINT   ConvertToPlantmap(float worldX,float worldZ);
  32. static MOVE_VERTEX    * m_pMovemap;
  33. //中心(128,128)记录观察者的绝对位置
  34. static CFrustumCull   m_cFrustumCull;
  35. static unsigned char  * m_pTmap;    //terrain map
  36. //地形数据
  37. static GRID_BIAS      * m_pCoverBias;
  38. static unsigned char  * m_pCovermap;
  39. //植被数据
  40. static VERTEX           m_ViewPos;
  41.     static int              m_ViewOffsetX;
  42.     static int              m_ViewOffsetZ;
  43. //观察者偏离世界坐标(0,0,0)的实际距离
  44. static float            m_ViewRotX;
  45. static float            m_ViewRotY;
  46.     ////////////////////目标
  47.     static double           m_focusPosX;//屏幕中心点的世界坐标
  48.     static double           m_focusPosY;
  49.     static double           m_focusPosZ;
  50. static double           m_distFromFocus;
  51. static int              m_focusState;
  52. static bool             m_bAttack;
  53. static float            m_myHealth;
  54.     //////////////////建筑物数据
  55. static int              m_numBuilding;
  56. static VERTEX          *m_buildingPos;
  57. static BOUNDARY_3D    **m_bigBndyBuilding;
  58. static BOUNDARY_3D    **m_smallBndyBuilding;
  59. //////////////////士兵
  60. static int              m_numSoldier;
  61. static VERTEX          *m_soldierPos;
  62.     static float           *m_soldierRot;
  63. static float           *m_soldierHealth;
  64. /////////////////////////////////////
  65. static int              m_numTriangles;
  66. private:
  67. bool    GetMissionSetting();
  68.     bool    CheckTreeCollide(VERTEX startPos,VERTEX endPos);
  69.     bool    CheckTerrainCollide(VERTEX startPos,VERTEX endPos,float step);
  70.     bool    CheckBuildingCollide(VERTEX startPos,VERTEX endPos);
  71. bool    ReadTerrainmapFile();
  72. bool    ReadPlantmapFile();
  73. int     GetPosInMovemap(int x,int z);
  74. int     GetPlantType(int mapx,int mapz);
  75.     POINT   ConvertToHeightmap(VERTEX *pos);
  76. bool    IsInBoundary3D(VERTEX *pos, BOUNDARY_3D *boundary);
  77.     void    MakeModulePath(char filename[], char sINIPath[]);
  78. CMath                  m_cMath;
  79. static int             m_numUser;
  80. };
  81. #endif // !defined(AFX_HEIGHTMAP_H__5700AE61_401D_11D6_812C_5254AB37CDC9__INCLUDED_)