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