Pioneer
CollMesh.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _COLLMESH_H
5 #define _COLLMESH_H
6 
7 #include "Aabb.h"
8 #include "RefCounted.h"
9 
10 class GeomTree;
11 
12 namespace Serializer {
13  class Writer;
14  class Reader;
15 } // namespace Serializer
16 
17 //This simply stores the collision GeomTrees
18 //and AABB.
19 class CollMesh : public RefCounted {
20 public:
22  m_geomTree(0),
23  m_totalTris(0)
24  {}
25  virtual ~CollMesh();
26 
27  inline Aabb &GetAabb() { return m_aabb; }
28 
29  inline double GetRadius() const { return m_aabb.GetRadius(); }
30  inline void SetRadius(double v)
31  {
32  //0 radius = trouble
33  m_aabb.radius = std::max(v, 0.1);
34  }
35 
36  const std::vector<vector3f> &GetGeomTreeVertices() const;
37  const Uint32 *GetGeomTreeIndices() const;
38  const unsigned int *GetGeomTreeTriFlags() const;
39  unsigned int GetGeomTreeNumTris() const;
40 
41  inline GeomTree *GetGeomTree() const { return m_geomTree; }
42 
43  inline void SetGeomTree(GeomTree *t)
44  {
45  assert(t);
46  m_geomTree = t;
47  }
48 
49  inline const std::vector<GeomTree *> &GetDynGeomTrees() const { return m_dynGeomTrees; }
50  inline void AddDynGeomTree(GeomTree *t)
51  {
52  assert(t);
53  m_dynGeomTrees.push_back(t);
54  }
55 
56  //for statistics
57  inline unsigned int GetNumTriangles() const { return m_totalTris; }
58  inline void SetNumTriangles(unsigned int i) { m_totalTris = i; }
59 
60  void Save(Serializer::Writer &wr) const;
61  void Load(Serializer::Reader &rd);
62 
63 protected:
66  std::vector<GeomTree *> m_dynGeomTrees;
67  unsigned int m_totalTris;
68 };
69 
70 #endif
Definition: CollMesh.h:19
GeomTree * m_geomTree
Definition: CollMesh.h:65
unsigned int GetNumTriangles() const
Definition: CollMesh.h:57
GeomTree * GetGeomTree() const
Definition: CollMesh.h:41
void SetNumTriangles(unsigned int i)
Definition: CollMesh.h:58
const std::vector< GeomTree * > & GetDynGeomTrees() const
Definition: CollMesh.h:49
void Load(Serializer::Reader &rd)
Definition: CollMesh.cpp:29
CollMesh()
Definition: CollMesh.h:21
void AddDynGeomTree(GeomTree *t)
Definition: CollMesh.h:50
void SetGeomTree(GeomTree *t)
Definition: CollMesh.h:43
Aabb & GetAabb()
Definition: CollMesh.h:27
Aabb m_aabb
Definition: CollMesh.h:64
void Save(Serializer::Writer &wr) const
Definition: CollMesh.cpp:12
void SetRadius(double v)
Definition: CollMesh.h:30
double GetRadius() const
Definition: CollMesh.h:29
unsigned int m_totalTris
Definition: CollMesh.h:67
const std::vector< vector3f > & GetGeomTreeVertices() const
Definition: CollMesh.cpp:54
const unsigned int * GetGeomTreeTriFlags() const
Definition: CollMesh.cpp:64
const Uint32 * GetGeomTreeIndices() const
Definition: CollMesh.cpp:59
std::vector< GeomTree * > m_dynGeomTrees
Definition: CollMesh.h:66
virtual ~CollMesh()
Definition: CollMesh.cpp:47
unsigned int GetGeomTreeNumTris() const
Definition: CollMesh.cpp:69
Definition: GeomTree.h:23
Definition: RefCounted.h:11
Definition: Serializer.h:110
Definition: Serializer.h:35
Definition: GeomTree.h:9
Definition: Aabb.h:9
double GetRadius() const
Definition: Aabb.h:50
double radius
Definition: Aabb.h:11