Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Collision.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_Collision_H
7 #define _INC_Collision_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "GrayMapData.h"
16 
17 MIDL_INTERFACE("7ED943DD-52E8-40b5-A8D8-76685C406330") ID3DXBaseMesh;
18 
19 namespace Gray3D
20 {
21  class cModelXFrame;
22 }
23 namespace GrayMapData
24 {
25  class cMapBase;
26 
28  {
32 
33  public:
34  // results
36  int m_iTriangleHits; // how many potential hits ?
40 
41  // Non changing params
42  cVector3f m_vEllipsoidRadius; // the elipse. used to transform the rest of the world into space as a sphere.
43  cMatrix4x4f m_mEllipsoid; // m_vEllipsoidRadius scaler
44 
45  protected:
46  // Work data.
47  cCylinder m_Cyl; // the sphere as it moves through space. shorten as m_fDistanceNearest is tested ?
48  cMatrix4x4f m_mWorldRoot; // work data for current tested object.
49 
50  public:
52 
54  CCollisionTest(const cVector3f& vEllipsoidRadius);
55  virtual ~CCollisionTest();
56 
57  protected:
58  virtual bool IsInsideTerrainCutter(cVector3f& vCol) const
59  {
60  return false;
61  }
62 
63  bool TestTriangle(const cTriangle3f& triangle);
64  bool TestIndexedFace(const BYTE* pVertices, const WORD* pFaces, UINT dwNumFaces, size_t dwStride);
65  void TestMesh(ID3DXBaseMesh* pMesh);
66  void TestFrame(cModelXFrame* pFrame);
67  void TestTerrain(cMapBase& map);
68 
69  bool IsValidEllipse() const
70  {
71  if (m_vEllipsoidRadius.x == 0)
72  return false;
73  if (m_vEllipsoidRadius.y == 0)
74  return false;
75  if (m_vEllipsoidRadius.z == 0)
76  return false;
77  return true;
78  }
79  };
80 };
81 
82 #endif // _INC_Collision_H
MIDL_INTERFACE("7ED943DD-52E8-40b5-A8D8-76685C406330") ID3DXBaseMesh
#define GRAYMAPDATA_LINK
Definition: GrayMapData.h:13
Definition: cModelX.h:174
Definition: cCylinder.h:18
Definition: cMatrix.h:194
Definition: cTriangle3.h:22
TYPE y
Definition: cVecT.h:545
TYPE z
Definition: cVecT.h:545
TYPE x
Definition: cVecT.h:545
Definition: cVector.h:94
Definition: Collision.h:28
cVector3f m_vIntersectionPoint
Definition: Collision.h:38
bool IsValidEllipse() const
Definition: Collision.h:69
cCylinder m_Cyl
Definition: Collision.h:47
cVector3f m_vEllipsoidRadius
Definition: Collision.h:42
virtual bool IsInsideTerrainCutter(cVector3f &vCol) const
Definition: Collision.h:58
cMatrix4x4f m_mWorldRoot
Definition: Collision.h:48
DECLARE_HEAP_ALIGNED_ALLOC(CCollisionTest)
cTriangle3f m_IntersectionTriangle
Definition: Collision.h:39
int m_iTriangleHits
Definition: Collision.h:36
float m_fDistanceNearest
Definition: Collision.h:37
cMatrix4x4f m_mEllipsoid
Definition: Collision.h:43
bool m_bCollisionFound
Definition: Collision.h:35
Definition: cMapBase.h:188
Definition: Gray3D.cpp:12
Definition: GrayMapData.cpp:12