Pioneer
Loading...
Searching...
No Matches
CollisionGeometry.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 _SCENEGRAPH_COLLISIONGEOMETRY_H
5#define _SCENEGRAPH_COLLISIONGEOMETRY_H
6
7/*
8 * Non-renderable geometry node which CollisionVisitor can use
9 * to build a collision mesh.
10 */
11
12#include "Node.h"
13
14namespace Graphics {
15 class Surface;
16}
17
18class GeomTree;
19class Geom;
20
21namespace SceneGraph {
22 class CollisionGeometry : public Node {
23 public:
24 CollisionGeometry(Graphics::Renderer *r, const std::vector<vector3f> &, const std::vector<Uint32> &, unsigned int flag);
26 virtual Node *Clone(NodeCopyCache *cache = 0) override;
27 virtual const char *GetTypeName() const override { return "CollisionGeometry"; }
28 virtual void Accept(NodeVisitor &nv) override;
29 virtual void Save(NodeDatabase &) override;
31
32 const std::vector<vector3f> &GetVertices() const { return m_vertices; }
33 const std::vector<Uint32> &GetIndices() const { return m_indices; }
34 unsigned int GetTriFlag() const { return m_triFlag; }
35
36 bool IsDynamic() const { return m_dynamic; }
37 void SetDynamic(bool b) { m_dynamic = b; }
38
39 //for linking game collision objects with these nodes
40 GeomTree *GetGeomTree() const { return m_geomTree; }
41 void SetGeomTree(GeomTree *c) { m_geomTree = c; }
42
43 Geom *GetGeom() const { return m_geom; }
44 void SetGeom(Geom *g) { m_geom = g; }
45
46 protected:
48
49 private:
50 void CopyData(const std::vector<vector3f> &, const std::vector<Uint32> &);
51 std::vector<vector3f> m_vertices;
52 std::vector<Uint32> m_indices;
53 unsigned int m_triFlag; //only one per node
54 bool m_dynamic;
55
56 //for dynamic collisions
57 GeomTree *m_geomTree;
58 Geom *m_geom;
59 };
60} // namespace SceneGraph
61
62#endif
Definition GeomTree.h:23
Definition Geom.h:16
Definition Renderer.h:44
Definition CollisionGeometry.h:22
virtual const char * GetTypeName() const override
Definition CollisionGeometry.h:27
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition CollisionGeometry.cpp:39
static CollisionGeometry * Load(NodeDatabase &)
Definition CollisionGeometry.cpp:70
~CollisionGeometry()
Definition CollisionGeometry.cpp:35
const std::vector< vector3f > & GetVertices() const
Definition CollisionGeometry.h:32
const std::vector< Uint32 > & GetIndices() const
Definition CollisionGeometry.h:33
void SetGeomTree(GeomTree *c)
Definition CollisionGeometry.h:41
Geom * GetGeom() const
Definition CollisionGeometry.h:43
bool IsDynamic() const
Definition CollisionGeometry.h:36
GeomTree * GetGeomTree() const
Definition CollisionGeometry.h:40
unsigned int GetTriFlag() const
Definition CollisionGeometry.h:34
virtual void Accept(NodeVisitor &nv) override
Definition CollisionGeometry.cpp:50
void SetDynamic(bool b)
Definition CollisionGeometry.h:37
virtual void Save(NodeDatabase &) override
Definition CollisionGeometry.cpp:56
void SetGeom(Geom *g)
Definition CollisionGeometry.h:44
Definition NodeCopyCache.h:14
Definition NodeVisitor.h:26
Definition Node.h:72
Definition Background.h:14
Definition CityOnPlanet.h:31
Definition Weld.h:10
Definition Node.h:63