Pioneer
Loading...
Searching...
No Matches
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
10class GeomTree;
11
12namespace Serializer {
13 class Writer;
14 class Reader;
15} // namespace Serializer
16
17//This simply stores the collision GeomTrees
18//and AABB.
19class CollMesh : public RefCounted {
20public:
22 m_geomTree(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
63protected:
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
Aabb & GetAabb()
Definition CollMesh.h:27
void SetNumTriangles(unsigned int i)
Definition CollMesh.h:58
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 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< GeomTree * > & GetDynGeomTrees() const
Definition CollMesh.h:49
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