Jolt Physics
A multi core friendly Game Physics Engine
|
Collision tester that tests collision using a sphere cast. More...
#include <VehicleCollisionTester.h>
Public Member Functions | |
JPH_OVERRIDE_NEW_DELETE | VehicleCollisionTesterCastSphere (ObjectLayer inObjectLayer, float inRadius, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f)) |
virtual bool | Collide (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override |
virtual void | PredictContactProperties (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override |
Public Member Functions inherited from VehicleCollisionTester | |
JPH_OVERRIDE_NEW_DELETE | VehicleCollisionTester ()=default |
Constructors. | |
VehicleCollisionTester (ObjectLayer inObjectLayer) | |
virtual | ~VehicleCollisionTester ()=default |
Virtual destructor. | |
ObjectLayer | GetObjectLayer () const |
Object layer to use for collision detection, this is used when the filters are not overridden. | |
void | SetObjectLayer (ObjectLayer inObjectLayer) |
void | SetBroadPhaseLayerFilter (const BroadPhaseLayerFilter *inFilter) |
Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor. | |
const BroadPhaseLayerFilter * | GetBroadPhaseLayerFilter () const |
void | SetObjectLayerFilter (const ObjectLayerFilter *inFilter) |
Access to the object layer filter, when set this overrides the object layer supplied in the constructor. | |
const ObjectLayerFilter * | GetObjectLayerFilter () const |
void | SetBodyFilter (const BodyFilter *inFilter) |
Access to the body filter, when set this overrides the default filter that filters out the vehicle body. | |
const BodyFilter * | GetBodyFilter () const |
Public Member Functions inherited from RefTarget< VehicleCollisionTester > | |
RefTarget ()=default | |
Constructor. | |
RefTarget (const RefTarget &) | |
~RefTarget () | |
assert no one is referencing us | |
void | SetEmbedded () const |
RefTarget & | operator= (const RefTarget &) |
Assignment operator. | |
uint32 | GetRefCount () const |
Get current refcount of this object. | |
void | AddRef () const |
Add or release a reference to this object. | |
void | Release () const |
Public Member Functions inherited from NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Additional Inherited Members | |
Static Public Member Functions inherited from RefTarget< VehicleCollisionTester > | |
static int | sInternalGetRefCountOffset () |
INTERNAL HELPER FUNCTION USED BY SERIALIZATION. | |
Protected Attributes inherited from VehicleCollisionTester | |
const BroadPhaseLayerFilter * | mBroadPhaseLayerFilter = nullptr |
const ObjectLayerFilter * | mObjectLayerFilter = nullptr |
const BodyFilter * | mBodyFilter = nullptr |
ObjectLayer | mObjectLayer = cObjectLayerInvalid |
Protected Attributes inherited from RefTarget< VehicleCollisionTester > | |
atomic< uint32 > | mRefCount |
Current reference count. | |
Static Protected Attributes inherited from RefTarget< VehicleCollisionTester > | |
static constexpr uint32 | cEmbedded |
A large value that gets added to the refcount to mark the object as embedded. | |
Collision tester that tests collision using a sphere cast.
|
inline |
Constructor
inObjectLayer | Object layer to test collision with |
inUp | World space up vector, used to avoid colliding with vertical walls. |
inRadius | Radius of sphere |
inMaxSlopeAngle | Max angle (rad) that is considered for colliding wheels. This is to avoid colliding with vertical walls. |
|
overridevirtual |
Do a collision test with the world
inPhysicsSystem | The physics system that should be tested against |
inVehicleConstraint | The vehicle constraint |
inWheelIndex | Index of the wheel that we're testing collision for |
inOrigin | Origin for the test, corresponds to the world space position for the suspension attachment point |
inDirection | Direction for the test (unit vector, world space) |
inVehicleBodyID | This body should be filtered out during collision detection to avoid self collisions |
outBody | Body that the wheel collided with |
outSubShapeID | Sub shape ID that the wheel collided with |
outContactPosition | Contact point between wheel and floor, in world space |
outContactNormal | Contact normal between wheel and floor, pointing away from the floor |
outSuspensionLength | New length of the suspension [0, inSuspensionMaxLength] |
Implements VehicleCollisionTester.
|
overridevirtual |
Do a cheap contact properties prediction based on the contact properties from the last collision test (provided as input parameters)
inPhysicsSystem | The physics system that should be tested against |
inVehicleConstraint | The vehicle constraint |
inWheelIndex | Index of the wheel that we're testing collision for |
inOrigin | Origin for the test, corresponds to the world space position for the suspension attachment point |
inDirection | Direction for the test (unit vector, world space) |
inVehicleBodyID | The body ID for the vehicle itself |
ioBody | Body that the wheel previously collided with |
ioSubShapeID | Sub shape ID that the wheel collided with during the last check |
ioContactPosition | Contact point between wheel and floor during the last check, in world space |
ioContactNormal | Contact normal between wheel and floor during the last check, pointing away from the floor |
ioSuspensionLength | New length of the suspension [0, inSuspensionMaxLength] |
Implements VehicleCollisionTester.