Public Types | |
enum | CollisionQueryType { DetectCollision, FirstContactPoint, AllContactPoints } |
typedef Int | Attributes |
typedef Int | VisualType |
enum | AttributeFlags { ShowAxes = 1, ShowBounds = 2, ShowCollisions = 4, ShowCollisionModel = 8, ShowCollisionDetection = 16, ShowEdges = 32, ShowNormals = 64, VerticesOnly = 128 } |
Public Member Functions | |
GJKCollisionDetector () | |
virtual | ~GJKCollisionDetector () |
virtual String | className () const |
virtual Object & | clone () const |
virtual CollisionModel::CollisionModelType | getType () const |
virtual bool | collision (ref< const Solid > solid1, ref< const Solid > solid2, CollisionQueryType queryType) |
virtual bool | collisionEnable (bool enabled) |
enable/disable all collisions | |
virtual bool | visualTypeSupported (VisualType type) const |
virtual osg::Node * | createOSGVisual (Visual::Attributes visualAttributes=0) const |
virtual void | setCollisionQueryType (CollisionQueryType collisionQueryType) |
virtual ref< CollidableBody > | createCollidableBody (ref< Shape > shape)=0 |
new CollidableBody with specified Shape | |
virtual ref< CollisionState > | getCollisionState (ref< const CollidableBody > collidableBody1, ref< const CollidableBody > collidableBody2) const |
Get the CollisionState for a pair of CollidableBodys. | |
virtual gfx::Segment3 | shortestSegmentBetween (ref< const Collidable > collidable1, ref< const Collidable > collidable2) |
Compute the shortest line segment between the surfaces of a pair of Collidables. | |
virtual void | reset () |
called at the beginning of each collision cycle | |
virtual void | collide (ref< const Collidable > collidable1, ref< const Collidable > collidable2)=0 |
notify PotentialCollisionListeners if possible collision between Collidables | |
virtual void | collide (ref< const Collidable > collidable) |
virtual bool | isCollisionEnabled () const |
virtual void | addPotentialCollisionListener (ref< PotentialCollisionListener > listener) |
virtual void | removePotentialCollisionListener (ref< PotentialCollisionListener > listener) |
virtual void | potentialCollision (ref< const Collidable > collidable1, ref< const Collidable > collidable2) |
virtual bool | isSameKindAs (const ReferencedObject &) const |
virtual bool | isSameKindAs (const Object &) const |
void | reference () const |
bool | unreference () const |
const int | referenceCount () const |
void | enableOnUnreferenceCall (bool enabled) |
virtual void | onUnreference () const |
Static Public Attributes | |
const Real | collisionEpsilon |
const Int | OSGVisual = 1 |
Protected Types | |
typedef std::pair< ref< const CollidableBody >, ref< const CollidableBody > > | CollidableBodyPair |
typedef std::map< CollidableBodyPair, ref< CollisionState > > | CollisionStateMap |
typedef base::reflist< PotentialCollisionListener > | ListenerList |
Protected Member Functions | |
virtual ref< CollisionState > | newCollisionState (ref< const Solid > solid1, ref< const Solid > solid2) const |
bool | intersect (ref< const GJKCollisionModel > model1, ref< const GJKCollisionModel > model2, const base::Transform &t1, const base::Transform &t2, ref< GJKCollisionModel::GJKModelState > modelState1, ref< GJKCollisionModel::GJKModelState > modelState2, ref< GJKCollisionState > collisionState) |
bool | closest (Vector3 &v) |
void | compute_vector (Int bits, Vector3 &v) |
void | compute_points (int bits, Point3 &p1, Point3 &p2) |
bool | valid (Int s) |
void | compute_det () |
virtual ref< CollisionState > | newCollisionState (ref< const CollidableBody > collidableBody1, ref< const CollidableBody > collidableBody2) const |
void | notifyListeners (ref< const Collidable > collidable1, ref< const Collidable > collidable2) |
call potentialCollision(collidable1,collidable2) on all listeners (if enabled) | |
void | resetListeners () |
call reset() on all listeners (if enabled) | |
Protected Attributes | |
bool | collisionDetectionEnabled |
Point3 | p [4] |
Point3 | q [4] |
Vector3 | y [4] |
Int | bits |
Int | last |
Int | last_bit |
Int | all_bits |
Real | det [16][4] |
Visual::Attributes | attributes |
ref_ptr< osg::Node > | node |
osg::Vec3Array * | verts |
osg::ref_ptr< osg::Geometry > | geom |
CollisionStateMap | collisionStates |
CollisionQueryType | queryType |
bool | enabled |
ListenerList | listeners |
int | _refCount |
bool | onUnreferenceEnabled |
|
Definition at line 39 of file Visual. Referenced by gfx::Visual::createOSGVisual(). |
|
Definition at line 65 of file CollisionDetector. |
|
Definition at line 66 of file CollisionDetector. |
|
|
|
Definition at line 44 of file Visual. Referenced by gfx::Visual::visualTypeSupported(). |
|
|
|
Definition at line 45 of file CollisionDetector. |
|
Referenced by clone(). |
|
|
|
Definition at line 60 of file Collider. References base::reflist< _Tp, _Alloc >::push_back(). |
|
return the name of the object's class type. Must be defined by derived classes. Implements base::Object. Definition at line 46 of file GJKCollisionDetector. Referenced by clone(). |
|
Definition at line 47 of file GJKCollisionDetector. References className(), GJKCollisionDetector(), and NewNamedObj. |
|
|
|
convenience method that calls collide(collidable1, collidable2) for each pair of Collidables in the group collidable, unless collidable isn't a group or has child inter-collision disabled (so that you can keep all your Collidables in a single top-level group) Reimplemented in physics::ODECollisionCuller, physics::ODECollisionDetector, and physics::SimpleCollisionCuller. |
|
notify PotentialCollisionListeners if possible collision between Collidables
Implemented in physics::CollisionResponseHandler, physics::NullCollisionResponseHandler, physics::ODECollisionCuller, physics::ODECollisionDetector, and physics::SimpleCollisionCuller. Referenced by physics::Collider::potentialCollision(). |
|
|
|
enable/disable all collisions
Reimplemented from physics::Collider. Definition at line 55 of file GJKCollisionDetector. References collisionDetectionEnabled. |
|
|
|
|
|
|
|
new CollidableBody with specified Shape
Implemented in physics::ODECollisionDetector. |
|
Reimplemented from gfx::Visual. |
|
If enabled, each call to unreference() will also call virtual method onUnreference() Definition at line 115 of file Referenced. References base::Referenced::onUnreferenceEnabled. |
|
Get the CollisionState for a pair of CollidableBodys.
|
|
Definition at line 49 of file GJKCollisionDetector. |
|
|
|
Reimplemented in physics::CollisionCuller. Definition at line 58 of file Collider. References physics::Collider::enabled. |
|
|
|
Definition at line 52 of file ReferencedObject. |
|
Reimplemented in physics::ODECollisionDetector. Definition at line 60 of file CollisionDetector. References NewNamedObj. |
|
|
|
call potentialCollision(collidable1,collidable2) on all listeners (if enabled)
|
|
Called by unreference() if enabled via enableOnUnreferenceCall(true). Typically overridden in subclasses that wish to know about unreference() calls - for example to handle manually breaking cyclic references Reimplemented in robot::control::ControllableAdaptor::AdaptorControlInterface, and robot::control::ControllableAdaptor. Definition at line 121 of file Referenced. Referenced by base::Referenced::unreference(). |
|
Implements physics::PotentialCollisionListener. Definition at line 66 of file Collider. References physics::Collider::collide(). |
|
Increment the reference count by one, indicating that this object has another pointer which is referencing it. Definition at line 65 of file Referenced. References base::Referenced::_refCount. |
|
Return the number pointers currently referencing this object. Definition at line 112 of file Referenced. References base::Referenced::_refCount. Referenced by robot::control::ControllableAdaptor::AdaptorControlInterface::onUnreference(). |
|
Definition at line 63 of file Collider. References base::reflist< _Tp, _Alloc >::remove(). |
|
called at the beginning of each collision cycle
Reimplemented from physics::PotentialCollisionListener. Reimplemented in physics::SolidCollisionResponseHandler, and robot::sim::SimulatedKinematicChain::ProximityCollisionResponseHandler. Definition at line 46 of file Collider. References physics::Collider::resetListeners(). |
|
call reset() on all listeners (if enabled)
Referenced by physics::Collider::reset(). |
|
Definition at line 47 of file CollisionDetector. References physics::CollisionDetector::queryType. |
|
Compute the shortest line segment between the surfaces of a pair of Collidables.
|
|
Decrement the reference count by one, indicating that a pointer to this object is referencing it. If the refence count goes to zero, it is assumed that this object is nolonger referenced and is automatically deleted. Definition at line 81 of file Referenced. References base::Referenced::_refCount, Exception, base::Referenced::onUnreference(), and base::Referenced::onUnreferenceEnabled. |
|
|
|
Reimplemented from gfx::Visual. Definition at line 63 of file GJKCollisionDetector. |
|
Definition at line 136 of file Referenced. Referenced by base::Referenced::reference(), base::Referenced::referenceCount(), base::Referenced::Referenced(), base::Referenced::unreference(), and base::Referenced::~Referenced(). |
|
Definition at line 109 of file GJKCollisionDetector. |
|
Definition at line 113 of file GJKCollisionDetector. |
|
Definition at line 106 of file GJKCollisionDetector. |
|
Definition at line 69 of file GJKCollisionDetector. Referenced by collisionEnable(). |
|
Definition at line 49 of file CollisionDetector. |
|
Definition at line 67 of file CollisionDetector. |
|
Definition at line 111 of file GJKCollisionDetector. |
|
Definition at line 74 of file Collider. Referenced by physics::Collider::Collider(), and physics::Collider::isCollisionEnabled(). |
|
Definition at line 116 of file GJKCollisionDetector. |
|
Definition at line 107 of file GJKCollisionDetector. |
|
Definition at line 108 of file GJKCollisionDetector. |
|
|
|
Definition at line 114 of file GJKCollisionDetector. |
|
Definition at line 137 of file Referenced. Referenced by base::Referenced::enableOnUnreferenceCall(), base::Referenced::Referenced(), and base::Referenced::unreference(). |
|
|
|
Definition at line 102 of file GJKCollisionDetector. |
|
Definition at line 103 of file GJKCollisionDetector. |
|
Definition at line 69 of file CollisionDetector. Referenced by physics::CollisionDetector::setCollisionQueryType(). |
|
Definition at line 115 of file GJKCollisionDetector. |
|
Definition at line 104 of file GJKCollisionDetector. |