Pioneer
Loading...
Searching...
No Matches
CollisionVisitor.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 _COLLISIONVISITOR_H
5#define _COLLISIONVISITOR_H
6/*
7 * Creates a new collision mesh from CollisionGeometry nodes
8 * or the nodes' AABB, when no CGeoms found.
9 */
10#include "CollMesh.h"
11#include "NodeVisitor.h"
12#include "libs.h"
13
14namespace SceneGraph {
15 class Group;
16 class MatrixTransform;
17 class StaticGeometry;
18
20 public:
22 virtual void ApplyStaticGeometry(StaticGeometry &);
25 //call after traversal complete
27 float GetBoundingRadius() const { return m_boundingRadius; }
28
29 private:
30 void ApplyDynamicCollisionGeometry(CollisionGeometry &);
31 void AabbToMesh(const Aabb &);
32 //geomtree is not built until all nodes are visited and
33 //BuildCollMesh called
34 RefCountedPtr<CollMesh> m_collMesh;
35 std::vector<matrix4x4f> m_matrixStack;
36 float m_boundingRadius;
37 bool m_properData;
38
39 //temporary arrays for static geometry
40 std::vector<vector3f> m_vertices;
41 std::vector<Uint32> m_indices;
42 std::vector<Uint32> m_flags;
43
44 Uint32 m_totalTris;
45 };
46} // namespace SceneGraph
47#endif
Definition RefCounted.h:36
Definition CollisionGeometry.h:22
Definition CollisionVisitor.h:19
float GetBoundingRadius() const
Definition CollisionVisitor.h:27
virtual void ApplyStaticGeometry(StaticGeometry &)
Definition CollisionVisitor.cpp:23
RefCountedPtr< CollMesh > CreateCollisionMesh()
Definition CollisionVisitor.cpp:162
CollisionVisitor()
Definition CollisionVisitor.cpp:13
virtual void ApplyMatrixTransform(MatrixTransform &)
Definition CollisionVisitor.cpp:38
virtual void ApplyCollisionGeometry(CollisionGeometry &)
Definition CollisionVisitor.cpp:49
Definition MatrixTransform.h:24
Definition NodeVisitor.h:26
Definition StaticGeometry.h:19
Definition CityOnPlanet.h:31
Definition Aabb.h:9