RigsofRods
Soft-body Physics Simulation
Collisions.h
Go to the documentation of this file.
1 /*
2  This source file is part of Rigs of Rods
3  Copyright 2005-2012 Pierre-Michel Ricordel
4  Copyright 2007-2012 Thomas Fischer
5  Copyright 2009 Lefteris Stamatogiannakis
6  Copyright 2013-2022 Petr Ohlidal
7 
8  For more information, see http://www.rigsofrods.org/
9 
10  Rigs of Rods is free software: you can redistribute it and/or modify
11  it under the terms of the GNU General Public License version 3, as
12  published by the Free Software Foundation.
13 
14  Rigs of Rods is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #pragma once
24 
25 #include "Application.h"
26 #include "SimData.h" // for collision_box_t
27 
28 #include <mutex>
29 #include <Ogre.h>
30 #include <string>
31 
32 namespace RoR {
33 
36 
39 
41 {
42  std::string es_instance_name;
43  std::string es_box_name;
44  Ogre::Quaternion es_direction;
46  int es_cbox;
47  bool es_enabled;
48 };
49 
51 {
52  Ogre::Vector3 a;
53  Ogre::Vector3 b;
54  Ogre::Vector3 c;
55  Ogre::AxisAlignedBox aab;
56  Ogre::Matrix3 forward;
57  Ogre::Matrix3 reverse;
59  bool enabled;
60 };
61 typedef std::vector<collision_tri_t> CollisionTriVec;
62 
65 {
66  std::string mesh_name;
67  std::string source_name;
68  Ogre::Vector3 position = Ogre::Vector3::ZERO;
69  Ogre::Quaternion orientation = Ogre::Quaternion::IDENTITY;
70  Ogre::Vector3 scale = Ogre::Vector3::ZERO;
71  Ogre::AxisAlignedBox bounding_box;
75  int num_verts = 0;
76  int num_indices = 0;
77 };
78 typedef std::vector<collision_mesh_t> CollisionMeshVec;
79 
81 {
82 public:
83 
84  typedef std::vector<collision_box_t> CollisionBoxVec;
85 
87  {
89  FX_HARD, // hard surface: rubber burning and sparks
90  FX_DUSTY, // dusty surface (with dust colour)
91  FX_CLUMPY, // throws clumps (e.g. snow, grass) with colour
93  };
94 
95  Collisions(Ogre::Vector3 terrn_size);
96  ~Collisions();
97 
98 private:
99 
105  {
106  static const int ELEMENT_TRI_BASE_INDEX = 1000000; // Effectively a maximum number of collision boxes
107 
108  inline hash_coll_element_t(unsigned int cell_id_, int value): cell_id(cell_id_), element_index(value) {}
109 
110  inline bool IsCollisionBox() const { return element_index < ELEMENT_TRI_BASE_INDEX; }
111  inline bool IsCollisionTri() const { return element_index >= ELEMENT_TRI_BASE_INDEX; }
112 
113  unsigned int cell_id;
114 
118  };
119 
120  static const int LATEST_GROUND_MODEL_VERSION = 3;
121  static const int MAX_EVENT_SOURCE = 500;
122 
123  // this is a power of two, change with caution
124  static const int HASH_POWER = 20;
125  static const int HASH_SIZE = 1 << HASH_POWER;
126 
127  // terrain size is limited to 327km x 327km:
128  static const int CELL_SIZE = 2.0; // we divide through this
129  static const int MAXIMUM_CELL = 0x7FFF;
130 
131  // collision boxes pool
132  CollisionBoxVec m_collision_boxes; // Formerly MAX_COLLISION_BOXES = 5000
133  std::vector<collision_box_t*> m_last_called_cboxes; // Only used for character, actors have their own cache `Actor::m_active_eventboxes`
134 
135  // collision tris pool
136  CollisionTriVec m_collision_tris; // Formerly MAX_COLLISION_TRIS = 100000
137  CollisionMeshVec m_collision_meshes; // For diagnostics/editing only.
138 
139  Ogre::AxisAlignedBox m_collision_aab; // Tight bounding box around all collision meshes
140 
141  // collision hashtable
142  std::array<float, HASH_SIZE> hashtable_height;
143  std::vector<hash_coll_element_t> hashtable[HASH_SIZE];
144 
145  // ground models
146  std::map<Ogre::String, ground_model_t> ground_models;
147 
148  // event sources
151 
152  bool permitEvent(Actor* actor, CollisionEventFilter filter);
153 
156  unsigned int hashmask;
157 
158  const Ogre::Vector3 m_terrain_size;
159 
160  void hash_add(int cell_x, int cell_z, int value, float h);
161  int hash_find(int cell_x, int cell_z);
162  unsigned int hashfunc(unsigned int cellid);
163  void parseGroundConfig(Ogre::ConfigFile* cfg, Ogre::String groundModel = "");
164 
165  Ogre::Vector3 calcCollidedSide(const Ogre::Vector3& pos, const Ogre::Vector3& lo, const Ogre::Vector3& hi);
166 
167 public:
168 
169  // how many elements per cell? power of 2 minus 2 is better
170  static const int CELL_BLOCKSIZE = 126;
171 
172  bool forcecam;
173  Ogre::Vector3 forcecampos;
175 
176  Ogre::Vector3 getPosition(const Ogre::String& inst, const Ogre::String& box);
177  Ogre::Quaternion getDirection(const Ogre::String& inst, const Ogre::String& box);
178  collision_box_t* getBox(const Ogre::String& inst, const Ogre::String& box);
179 
180  std::pair<bool, Ogre::Real> intersectsTris(Ogre::Ray ray);
181 
182  float getSurfaceHeight(float x, float z);
183  float getSurfaceHeightBelow(float x, float z, float height);
184  bool collisionCorrect(Ogre::Vector3* refpos, bool envokeScriptCallbacks = true);
185  bool groundCollision(node_t* node, float dt);
186  bool isInside(Ogre::Vector3 pos, const Ogre::String& inst, const Ogre::String& box, float border = 0);
187  bool isInside(Ogre::Vector3 pos, collision_box_t* cbox, float border = 0);
188  bool nodeCollision(node_t* node, float dt);
189  void envokeScriptCallback(collision_box_t* cbox, node_t* node = 0); // Only invoke on main thread! Oterwise use `MSG_SIM_SCRIPT_CALLBACK_QUEUED`
190  void findPotentialEventBoxes(Actor* actor, CollisionBoxPtrVec& out_boxes);
191 
192  void finishLoadingTerrain();
193 
194  int addCollisionBox(bool rotating, bool virt, Ogre::Vector3 pos, Ogre::Vector3 rot, Ogre::Vector3 l, Ogre::Vector3 h, Ogre::Vector3 sr, const Ogre::String& eventname, const Ogre::String& instancename, bool forcecam, Ogre::Vector3 campos, Ogre::Vector3 sc = Ogre::Vector3::UNIT_SCALE, Ogre::Vector3 dr = Ogre::Vector3::ZERO, CollisionEventFilter event_filter = EVENT_ALL, int scripthandler = -1);
195  void addCollisionMesh(Ogre::String const& srcname, Ogre::String const& meshname, Ogre::Vector3 const& pos, Ogre::Quaternion const& q, Ogre::Vector3 const& scale, ground_model_t* gm = 0, std::vector<int>* collTris = 0);
196  void registerCollisionMesh(Ogre::String const& srcname, Ogre::String const& meshname, Ogre::Vector3 const& pos, Ogre::AxisAlignedBox bounding_box, ground_model_t* gm, int ctri_start, int ctri_count);
197  int addCollisionTri(Ogre::Vector3 p1, Ogre::Vector3 p2, Ogre::Vector3 p3, ground_model_t* gm);
198  void createCollisionDebugVisualization(Ogre::SceneNode* root_node, Ogre::AxisAlignedBox const& area_limit, std::vector<Ogre::SceneNode*>& out_nodes);
199  void removeCollisionBox(int number);
200  void removeCollisionTri(int number);
202 
203  Ogre::AxisAlignedBox getCollisionAAB() { return m_collision_aab; };
204 
205  // ground models things
206  int loadDefaultModels();
207  int loadGroundModelsConfigFile(Ogre::String filename);
208  std::map<Ogre::String, ground_model_t>* getGroundModels() { return &ground_models; };
209  void setupLandUse(const char* configfile);
210  ground_model_t* getGroundModelByString(const Ogre::String name);
211 
212  void getMeshInformation(Ogre::Mesh* mesh, size_t& vertex_count, Ogre::Vector3* & vertices,
213  size_t& index_count, unsigned* & indices,
214  const Ogre::Vector3& position = Ogre::Vector3::ZERO,
215  const Ogre::Quaternion& orient = Ogre::Quaternion::IDENTITY, const Ogre::Vector3& scale = Ogre::Vector3::UNIT_SCALE);
216 
221 };
222 
223 Ogre::Vector3 primitiveCollision(node_t* node, Ogre::Vector3 velocity, float mass, Ogre::Vector3 normal, float dt, ground_model_t* gm, float penetration = 0);
224 
227 
228 } // namespace RoR
RoR::Collisions::m_terrain_size
const Ogre::Vector3 m_terrain_size
Definition: Collisions.h:158
ROR_ASSERT
#define ROR_ASSERT(_EXPR)
Definition: Application.h:40
RoR::Collisions::FX_PARTICLE
@ FX_PARTICLE
Definition: Collisions.h:92
RoR::Collisions::parseGroundConfig
void parseGroundConfig(Ogre::ConfigFile *cfg, Ogre::String groundModel="")
Definition: Collisions.cpp:206
RoR::Collisions::landuse
Landusemap * landuse
Definition: Collisions.h:154
RoR::Actor
Softbody object; can be anything from soda can to a space shuttle Constructed from a truck definition...
Definition: Actor.h:49
RoR::primitiveCollision
Ogre::Vector3 primitiveCollision(node_t *node, Ogre::Vector3 velocity, float mass, Ogre::Vector3 normal, float dt, ground_model_t *gm, float penetration=0)
Definition: Collisions.cpp:1229
RoR::Collisions::hash_coll_element_t
Definition: Collisions.h:104
RoR::collision_tri_t::enabled
bool enabled
Definition: Collisions.h:59
RoR::Collisions::FX_CLUMPY
@ FX_CLUMPY
Definition: Collisions.h:91
RoR::Collisions::MAXIMUM_CELL
static const int MAXIMUM_CELL
Definition: Collisions.h:129
RoR::Collisions::hash_coll_element_t::IsCollisionBox
bool IsCollisionBox() const
Definition: Collisions.h:110
RoR::collision_tri_t::reverse
Ogre::Matrix3 reverse
Definition: Collisions.h:57
RoR::collision_tri_t
Definition: Collisions.h:50
RoR::Collisions
Definition: Collisions.h:80
RoR::Collisions::addCollisionBox
int addCollisionBox(bool rotating, bool virt, Ogre::Vector3 pos, Ogre::Vector3 rot, Ogre::Vector3 l, Ogre::Vector3 h, Ogre::Vector3 sr, const Ogre::String &eventname, const Ogre::String &instancename, bool forcecam, Ogre::Vector3 campos, Ogre::Vector3 sc=Ogre::Vector3::UNIT_SCALE, Ogre::Vector3 dr=Ogre::Vector3::ZERO, CollisionEventFilter event_filter=EVENT_ALL, int scripthandler=-1)
Definition: Collisions.cpp:401
RoR::eventsource_t::es_instance_name
std::string es_instance_name
Specified by user when calling "GameScript::spawnObject()".
Definition: Collisions.h:42
z
float z
Definition: (ValueTypes) quaternion.h:7
RoR::collision_mesh_t
Records which collision triangles belong to which mesh.
Definition: Collisions.h:64
RoR::Collisions::getSurfaceHeightBelow
float getSurfaceHeightBelow(float x, float z, float height)
Definition: Collisions.cpp:676
RoR::eventsource_t
< Scripting
Definition: Collisions.h:40
RoR::CollisionEventFilter
CollisionEventFilter
Definition: SimData.h:45
RoR::Collisions::defaultgm
ground_model_t * defaultgm
Definition: Collisions.h:174
RoR::Collisions::free_eventsource
int free_eventsource
Definition: Collisions.h:150
RoR::Collisions::groundCollision
bool groundCollision(node_t *node, float dt)
Definition: Collisions.cpp:1213
RoR::Collisions::clearEventCache
void clearEventCache()
Definition: Collisions.h:201
RoR::Collisions::findPotentialEventBoxes
void findPotentialEventBoxes(Actor *actor, CollisionBoxPtrVec &out_boxes)
Definition: Collisions.cpp:1089
RoR::Collisions::HASH_POWER
static const int HASH_POWER
Definition: Collisions.h:124
RoR::Collisions::collision_version
int collision_version
Definition: Collisions.h:155
RoR::collision_mesh_t::bounding_box
Ogre::AxisAlignedBox bounding_box
Definition: Collisions.h:71
RoR::Collisions::hash_coll_element_t::element_index
int element_index
Values below ELEMENT_TRI_BASE_INDEX are collision box indices (Collisions::m_collision_boxes),...
Definition: Collisions.h:117
RoR::Collisions::getPosition
Ogre::Vector3 getPosition(const Ogre::String &inst, const Ogre::String &box)
Definition: Collisions.cpp:1134
RoR::Collisions::CELL_BLOCKSIZE
static const int CELL_BLOCKSIZE
Definition: Collisions.h:170
RoR::Collisions::getCollisionTriangles
CollisionTriVec const & getCollisionTriangles() const
Definition: Collisions.h:220
RoR::CollisionBoxPtrVec
std::vector< collision_box_t * > CollisionBoxPtrVec
Definition: SimData.h:735
RoR::collision_mesh_t::scale
Ogre::Vector3 scale
Definition: Collisions.h:70
RoR::Collisions::FX_DUSTY
@ FX_DUSTY
Definition: Collisions.h:90
RoR::Collisions::registerCollisionMesh
void registerCollisionMesh(Ogre::String const &srcname, Ogre::String const &meshname, Ogre::Vector3 const &pos, Ogre::AxisAlignedBox bounding_box, ground_model_t *gm, int ctri_start, int ctri_count)
Mark already generated collision tris as belonging to (virtual) mesh.
Definition: Collisions.cpp:1456
RoR::Collisions::addCollisionMesh
void addCollisionMesh(Ogre::String const &srcname, Ogre::String const &meshname, Ogre::Vector3 const &pos, Ogre::Quaternion const &q, Ogre::Vector3 const &scale, ground_model_t *gm=0, std::vector< int > *collTris=0)
generate collision tris from existing mesh resource
Definition: Collisions.cpp:1409
RoR::collision_tri_t::gm
ground_model_t * gm
Definition: Collisions.h:58
RoR::Collisions::collisionCorrect
bool collisionCorrect(Ogre::Vector3 *refpos, bool envokeScriptCallbacks=true)
Definition: Collisions.cpp:766
RoR::Collisions::hashtable_height
std::array< float, HASH_SIZE > hashtable_height
Definition: Collisions.h:142
RoR::collision_box_t
Definition: SimData.h:713
RoR::Collisions::FX_NONE
@ FX_NONE
Definition: Collisions.h:88
RoR::Collisions::calcCollidedSide
Ogre::Vector3 calcCollidedSide(const Ogre::Vector3 &pos, const Ogre::Vector3 &lo, const Ogre::Vector3 &hi)
Definition: Collisions.cpp:295
RoR::Collisions::removeCollisionTri
void removeCollisionTri(int number)
Definition: Collisions.cpp:356
RoR::Collisions::hash_find
int hash_find(int cell_x, int cell_z)
Definition: Collisions.cpp:393
RoR::Collisions::loadDefaultModels
int loadDefaultModels()
Definition: Collisions.cpp:145
RoR::collision_tri_t::a
Ogre::Vector3 a
Definition: Collisions.h:52
RoR::Collisions::loadGroundModelsConfigFile
int loadGroundModelsConfigFile(Ogre::String filename)
Definition: Collisions.cpp:150
RoR::collision_mesh_t::collision_tri_count
int collision_tri_count
Definition: Collisions.h:74
RoR::Collisions::intersectsTris
std::pair< bool, Ogre::Real > intersectsTris(Ogre::Ray ray)
Definition: Collisions.cpp:628
RoR::collision_tri_t::forward
Ogre::Matrix3 forward
Definition: Collisions.h:56
RoR::collision_mesh_t::collision_tri_start
int collision_tri_start
Definition: Collisions.h:73
RoR::collision_mesh_t::num_indices
int num_indices
Definition: Collisions.h:76
RoR::Collisions::removeCollisionBox
void removeCollisionBox(int number)
Definition: Collisions.cpp:343
RoR::Collisions::getGroundModelByString
ground_model_t * getGroundModelByString(const Ogre::String name)
Definition: Collisions.cpp:365
RoR::eventsource_t::es_box_name
std::string es_box_name
Specified in ODEF file as "event".
Definition: Collisions.h:43
SimData.h
Core data structures for simulation; Everything affected by by either physics, network or user intera...
RoR::Collisions::getCollisionAAB
Ogre::AxisAlignedBox getCollisionAAB()
Definition: Collisions.h:203
RoR::Collisions::envokeScriptCallback
void envokeScriptCallback(collision_box_t *cbox, node_t *node=0)
Definition: Collisions.cpp:602
RoR::Collisions::getBox
collision_box_t * getBox(const Ogre::String &inst, const Ogre::String &box)
Definition: Collisions.cpp:1158
RoR::Collisions::forcecampos
Ogre::Vector3 forcecampos
Definition: Collisions.h:173
RoR::Collisions::hashmask
unsigned int hashmask
Definition: Collisions.h:156
RoR::collision_mesh_t::ground_model
ground_model_t * ground_model
Definition: Collisions.h:72
RoR::eventsource_t::es_cbox
int es_cbox
Collision box ID.
Definition: Collisions.h:46
RoR::Collisions::HASH_SIZE
static const int HASH_SIZE
Definition: Collisions.h:125
RoR::Collisions::CollisionBoxVec
std::vector< collision_box_t > CollisionBoxVec
Definition: Collisions.h:84
RoR::Collisions::ground_models
std::map< Ogre::String, ground_model_t > ground_models
Definition: Collisions.h:146
RoR::Collisions::addCollisionTri
int addCollisionTri(Ogre::Vector3 p1, Ogre::Vector3 p2, Ogre::Vector3 p3, ground_model_t *gm)
Definition: Collisions.cpp:551
RoR::Collisions::hashtable
std::vector< hash_coll_element_t > hashtable[HASH_SIZE]
Definition: Collisions.h:143
RoR::collision_tri_t::aab
Ogre::AxisAlignedBox aab
Definition: Collisions.h:55
Application.h
Central state/object manager and communications hub.
RoR::node_t
Physics: A vertex in the softbody structure.
Definition: SimData.h:285
RoR::Collisions::m_collision_tris
CollisionTriVec m_collision_tris
Definition: Collisions.h:136
RoR::Collisions::SurfaceType
SurfaceType
Definition: Collisions.h:86
RoR::eventsource_t::es_script_handler
int es_script_handler
AngelScript function ID.
Definition: Collisions.h:45
RoR::Collisions::getSurfaceHeight
float getSurfaceHeight(float x, float z)
Definition: Collisions.cpp:671
RoR::CollisionTriVec
std::vector< collision_tri_t > CollisionTriVec
Definition: Collisions.h:61
RoR::Collisions::Collisions
Collisions(Ogre::Vector3 terrn_size)
Definition: Collisions.cpp:118
RoR::CollisionMeshVec
std::vector< collision_mesh_t > CollisionMeshVec
Definition: Collisions.h:78
RoR::Collisions::forcecam
bool forcecam
Definition: Collisions.h:172
RoR::Collisions::FX_HARD
@ FX_HARD
Definition: Collisions.h:89
RoR::Collisions::nodeCollision
bool nodeCollision(node_t *node, float dt)
Definition: Collisions.cpp:927
RoR::Collisions::getMeshInformation
void getMeshInformation(Ogre::Mesh *mesh, size_t &vertex_count, Ogre::Vector3 *&vertices, size_t &index_count, unsigned *&indices, const Ogre::Vector3 &position=Ogre::Vector3::ZERO, const Ogre::Quaternion &orient=Ogre::Quaternion::IDENTITY, const Ogre::Vector3 &scale=Ogre::Vector3::UNIT_SCALE)
Definition: Collisions.cpp:1470
RoR::Collisions::createCollisionDebugVisualization
void createCollisionDebugVisualization(Ogre::SceneNode *root_node, Ogre::AxisAlignedBox const &area_limit, std::vector< Ogre::SceneNode * > &out_nodes)
Definition: Collisions.cpp:1315
RoR::Collisions::m_collision_meshes
CollisionMeshVec m_collision_meshes
Definition: Collisions.h:137
RoR::Collisions::getCollisionMeshes
CollisionMeshVec const & getCollisionMeshes() const
Definition: Collisions.h:219
RoR::Collisions::MAX_EVENT_SOURCE
static const int MAX_EVENT_SOURCE
Definition: Collisions.h:121
RoR::Collisions::LATEST_GROUND_MODEL_VERSION
static const int LATEST_GROUND_MODEL_VERSION
Definition: Collisions.h:120
RoR::collision_mesh_t::num_verts
int num_verts
Definition: Collisions.h:75
RoR::Collisions::defaultgroundgm
ground_model_t * defaultgroundgm
Definition: Collisions.h:174
RoR::Collisions::hash_coll_element_t::ELEMENT_TRI_BASE_INDEX
static const int ELEMENT_TRI_BASE_INDEX
Definition: Collisions.h:106
RoR::Collisions::permitEvent
bool permitEvent(Actor *actor, CollisionEventFilter filter)
Definition: Collisions.cpp:906
RoR::Collisions::getDirection
Ogre::Quaternion getDirection(const Ogre::String &inst, const Ogre::String &box)
Definition: Collisions.cpp:1146
RoR::Collisions::getEventSource
eventsource_t & getEventSource(int pos)
Definition: Collisions.h:217
RoR::ground_model_t
Surface friction properties.
Definition: SimData.h:738
RoR::Collisions::getGroundModels
std::map< Ogre::String, ground_model_t > * getGroundModels()
Definition: Collisions.h:208
RoR::Collisions::m_last_called_cboxes
std::vector< collision_box_t * > m_last_called_cboxes
Definition: Collisions.h:133
RoR::Collisions::setupLandUse
void setupLandUse(const char *configfile)
Definition: Collisions.cpp:333
RoR::Collisions::isInside
bool isInside(Ogre::Vector3 pos, const Ogre::String &inst, const Ogre::String &box, float border=0)
Definition: Collisions.cpp:1170
RoR::EVENT_ALL
@ EVENT_ALL
Definition: SimData.h:48
RoR::collision_tri_t::b
Ogre::Vector3 b
Definition: Collisions.h:53
RoR::Collisions::hash_add
void hash_add(int cell_x, int cell_z, int value, float h)
Definition: Collisions.cpp:384
RoR::Collisions::m_collision_aab
Ogre::AxisAlignedBox m_collision_aab
Definition: Collisions.h:139
RoR::eventsource_t::es_direction
Ogre::Quaternion es_direction
Definition: Collisions.h:44
RoR::collision_mesh_t::orientation
Ogre::Quaternion orientation
Definition: Collisions.h:69
RoR::Collisions::finishLoadingTerrain
void finishLoadingTerrain()
Definition: Collisions.cpp:1586
RoR::Collisions::hashfunc
unsigned int hashfunc(unsigned int cellid)
Returns index to 'hashtable'.
Definition: Collisions.cpp:373
RoR::collision_mesh_t::source_name
std::string source_name
Definition: Collisions.h:67
RoR::Collisions::getCollisionBoxes
CollisionBoxVec const & getCollisionBoxes() const
Definition: Collisions.h:218
RoR::eventsource_t::es_enabled
bool es_enabled
Definition: Collisions.h:47
RoR::Collisions::hash_coll_element_t::hash_coll_element_t
hash_coll_element_t(unsigned int cell_id_, int value)
Definition: Collisions.h:108
RoR::Collisions::hash_coll_element_t::IsCollisionTri
bool IsCollisionTri() const
Definition: Collisions.h:111
RoR::Collisions::hash_coll_element_t::cell_id
unsigned int cell_id
Definition: Collisions.h:113
RoR::collision_tri_t::c
Ogre::Vector3 c
Definition: Collisions.h:54
RoR
Definition: AppContext.h:36
RoR::Collisions::CELL_SIZE
static const int CELL_SIZE
Definition: Collisions.h:128
x
float x
Definition: (ValueTypes) quaternion.h:5
RoR::Collisions::eventsources
eventsource_t eventsources[MAX_EVENT_SOURCE]
Definition: Collisions.h:149
RoR::Collisions::m_collision_boxes
CollisionBoxVec m_collision_boxes
Definition: Collisions.h:132
RoR::Landusemap
Definition: Landusemap.h:33
RoR::collision_mesh_t::position
Ogre::Vector3 position
Definition: Collisions.h:68
RoR::collision_mesh_t::mesh_name
std::string mesh_name
Definition: Collisions.h:66
RoR::Collisions::~Collisions
~Collisions()
Definition: Collisions.cpp:140