![]() |
Isis 3 Programmer Reference
|
Bullet World manager maintains a proper state for target bodies. More...
#include <BulletWorldManager.h>
Public Member Functions | |
BulletWorldManager () | |
Default empty constructor. | |
BulletWorldManager (const QString &name) | |
Construct a world manager with a given name. | |
virtual | ~BulletWorldManager () |
Destroys the BulletWorldManager. | |
QString | name () const |
Name of the world. | |
int | size () const |
Number of collision objects in the world. | |
BulletTargetShape * | getTarget (const int &index=0) const |
Return a collision object by index into the world. | |
BulletTargetShape * | getTarget (const QString &name) const |
Look for a specific collision object by name. | |
void | addTarget (BulletTargetShape *target) |
Add a Bullet shape to the collision world. | |
bool | raycast (const btVector3 &observer, const btVector3 &lookdir, btCollisionWorld::RayResultCallback &hits) const |
Perform ray casting from a position and a look direction. | |
const btCollisionWorld & | getWorld () const |
Get the Collision World where the targets exist. | |
Private Member Functions | |
void | initWorld () |
Initialize the collision world for object ray tracing. | |
Private Attributes | |
QString | m_name |
QScopedPointer< btDefaultCollisionConfiguration > | m_collision |
! The name of the Bullet world. | |
QScopedPointer< btCollisionDispatcher > | m_dispatcher |
! The collision configuration for the world. | |
QScopedPointer< btBroadphaseInterface > | m_broadphase |
! The dispatcher for the world. | |
QScopedPointer< btCollisionWorld > | m_world |
! The interface for overlaps in the world's aabb acceleration tree. | |
QMutex | m_mutex |
! The Bullet collision world that contains the representation of the body. | |
Bullet World manager maintains a proper state for target bodies.
This class maintains the physics world created in Bullet-verse. This world is target-centric in that the center of the world is the center of the target (body-fixed) coordinate system. This could be changed to represent some other system (e.g., J2000), However this design allows one to operate on a per target basis.
This class uses only the collision body world of Bullet, which is static and will not be subject to simulation operations.
This design also allows for a whole target body DEM to be loaded or a large body broken up into smaller parts of the whole if needed.
Definition at line 41 of file BulletWorldManager.h.
Isis::BulletWorldManager::BulletWorldManager | ( | ) |
Default empty constructor.
Definition at line 28 of file BulletWorldManager.cpp.
References initWorld().
Isis::BulletWorldManager::BulletWorldManager | ( | const QString & | name | ) |
Construct a world manager with a given name.
name | The name of the world. |
Definition at line 39 of file BulletWorldManager.cpp.
References initWorld(), and name().
|
virtual |
Destroys the BulletWorldManager.
Definition at line 48 of file BulletWorldManager.cpp.
void Isis::BulletWorldManager::addTarget | ( | BulletTargetShape * | target | ) |
Add a Bullet shape to the collision world.
target | The target shape to add to the world. |
Definition at line 113 of file BulletWorldManager.cpp.
References Isis::BulletTargetShape::body(), and m_world.
BulletTargetShape * Isis::BulletWorldManager::getTarget | ( | const int & | index = 0 | ) | const |
Return a collision object by index into the world.
index | Index from 0 to size()-1 of the object that exist in the world |
Definition at line 78 of file BulletWorldManager.cpp.
BulletTargetShape * Isis::BulletWorldManager::getTarget | ( | const QString & | name | ) | const |
Look for a specific collision object by name.
name | Name of collision object to search for |
Definition at line 92 of file BulletWorldManager.cpp.
References m_world, Isis::BulletTargetShape::name(), and name().
const btCollisionWorld & Isis::BulletWorldManager::getWorld | ( | ) | const |
Get the Collision World where the targets exist.
Definition at line 151 of file BulletWorldManager.cpp.
References m_world.
|
private |
Initialize the collision world for object ray tracing.
Definition at line 161 of file BulletWorldManager.cpp.
References m_broadphase, m_collision, m_dispatcher, and m_world.
Referenced by BulletWorldManager(), and BulletWorldManager().
QString Isis::BulletWorldManager::name | ( | ) | const |
Name of the world.
Definition at line 56 of file BulletWorldManager.cpp.
Referenced by BulletWorldManager(), and getTarget().
bool Isis::BulletWorldManager::raycast | ( | const btVector3 & | rayStart, |
const btVector3 & | rayEnd, | ||
btCollisionWorld::RayResultCallback & | results ) const |
Perform ray casting from a position and a look direction.
rayStart | The origin of the ray | |
rayEnd | The end point of the ray | |
[in,out] | results | Ray intersection callback. holds the output results of the ray cast. The type of callback determines what happens when an intersection is found during ray casting. |
Definition at line 139 of file BulletWorldManager.cpp.
References m_world.
int Isis::BulletWorldManager::size | ( | ) | const |
Number of collision objects in the world.
Definition at line 66 of file BulletWorldManager.cpp.
References m_world.
Referenced by getTarget().
|
private |
! The dispatcher for the world.
Definition at line 70 of file BulletWorldManager.h.
Referenced by initWorld().
|
private |
! The name of the Bullet world.
Definition at line 65 of file BulletWorldManager.h.
Referenced by initWorld().
|
private |
! The collision configuration for the world.
Definition at line 68 of file BulletWorldManager.h.
Referenced by initWorld().
|
mutableprivate |
! The Bullet collision world that contains the representation of the body.
Mutex for thread safety
Definition at line 77 of file BulletWorldManager.h.
|
private |
Definition at line 63 of file BulletWorldManager.h.
|
private |
! The interface for overlaps in the world's aabb acceleration tree.
Definition at line 73 of file BulletWorldManager.h.
Referenced by addTarget(), getTarget(), getTarget(), getWorld(), initWorld(), raycast(), and size().
U.S. Department of the Interior | U.S. Geological Survey ISIS | Privacy & Disclaimers | Astrogeology Research Program To contact us, please post comments and questions on the USGS Astrogeology Discussion Board To report a bug, or suggest a feature go to: ISIS Github File Modified: 02/24/2025 16:15:34 |