PxPhysics Class Referenceabstract

Abstract singleton factory class used for instancing objects in the Physics SDK. More...

#include <PxPhysics.h>

Public Member Functions

Basics
virtual ~PxPhysics ()
 
virtual void release ()=0
 Destroys the instance it is called on. More...
 
virtual PxFoundationgetFoundation ()=0
 Retrieves the Foundation instance. More...
 
virtual PxAggregatecreateAggregate (PxU32 maxSize, bool enableSelfCollision)=0
 Creates an aggregate with the specified maximum size and selfCollision property. More...
 
virtual const PxTolerancesScalegetTolerancesScale () const =0
 Returns the simulation tolerance parameters. More...
 
Meshes
virtual PxTriangleMeshcreateTriangleMesh (PxInputStream &stream)=0
 Creates a triangle mesh object. More...
 
virtual PxU32 getNbTriangleMeshes () const =0
 Return the number of triangle meshes that currently exist. More...
 
virtual PxU32 getTriangleMeshes (PxTriangleMesh **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of triangle mesh pointers to a user buffer. More...
 
virtual PxHeightFieldcreateHeightField (PxInputStream &stream)=0
 Creates a heightfield object from previously cooked stream. More...
 
virtual PxU32 getNbHeightFields () const =0
 Return the number of heightfields that currently exist. More...
 
virtual PxU32 getHeightFields (PxHeightField **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of heightfield pointers to a user buffer. More...
 
virtual PxConvexMeshcreateConvexMesh (PxInputStream &stream)=0
 Creates a convex mesh object. More...
 
virtual PxU32 getNbConvexMeshes () const =0
 Return the number of convex meshes that currently exist. More...
 
virtual PxU32 getConvexMeshes (PxConvexMesh **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of convex mesh pointers to a user buffer. More...
 
virtual PxBVHStructurecreateBVHStructure (PxInputStream &stream)=0
 Creates a bounding volume hierarchy structure. More...
 
virtual PxU32 getNbBVHStructures () const =0
 Return the number of bounding volume hierarchy structures that currently exist. More...
 
virtual PxU32 getBVHStructures (PxBVHStructure **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of bounding volume hierarchy structure pointers to a user buffer. More...
 
Scenes
virtual PxScenecreateScene (const PxSceneDesc &sceneDesc)=0
 Creates a scene. More...
 
virtual PxU32 getNbScenes () const =0
 Gets number of created scenes. More...
 
virtual PxU32 getScenes (PxScene **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of scene pointers to a user buffer. More...
 
Actors
virtual PxRigidStaticcreateRigidStatic (const PxTransform &pose)=0
 Creates a static rigid actor with the specified pose and all other fields initialized to their default values. More...
 
virtual PxRigidDynamiccreateRigidDynamic (const PxTransform &pose)=0
 Creates a dynamic rigid actor with the specified pose and all other fields initialized to their default values. More...
 
virtual PxPruningStructurecreatePruningStructure (PxRigidActor *const *actors, PxU32 nbActors)=0
 Creates a pruning structure from actors. More...
 
Shapes
PX_FORCE_INLINE PxShapecreateShape (const PxGeometry &geometry, const PxMaterial &material, bool isExclusive=false, PxShapeFlags shapeFlags=PxShapeFlag::eVISUALIZATION|PxShapeFlag::eSCENE_QUERY_SHAPE|PxShapeFlag::eSIMULATION_SHAPE)
 Creates a shape which may be attached to multiple actors. More...
 
virtual PxShapecreateShape (const PxGeometry &geometry, PxMaterial *const *materials, PxU16 materialCount, bool isExclusive=false, PxShapeFlags shapeFlags=PxShapeFlag::eVISUALIZATION|PxShapeFlag::eSCENE_QUERY_SHAPE|PxShapeFlag::eSIMULATION_SHAPE)=0
 Creates a shape which may be attached to multiple actors. More...
 
virtual PxU32 getNbShapes () const =0
 Return the number of shapes that currently exist. More...
 
virtual PxU32 getShapes (PxShape **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of shape pointers to a user buffer. More...
 
Constraints and Articulations
virtual PxConstraintcreateConstraint (PxRigidActor *actor0, PxRigidActor *actor1, PxConstraintConnector &connector, const PxConstraintShaderTable &shaders, PxU32 dataSize)=0
 Creates a constraint shader. More...
 
virtual PxArticulationcreateArticulation ()=0
 Creates an articulation with all fields initialized to their default values. More...
 
virtual PxArticulationReducedCoordinatecreateArticulationReducedCoordinate ()=0
 Creates a reduced coordinate articulation with all fields initialized to their default values. More...
 
Materials
virtual PxMaterialcreateMaterial (PxReal staticFriction, PxReal dynamicFriction, PxReal restitution)=0
 Creates a new material with default properties. More...
 
virtual PxU32 getNbMaterials () const =0
 Return the number of materials that currently exist. More...
 
virtual PxU32 getMaterials (PxMaterial **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Writes the array of material pointers to a user buffer. More...
 
Deletion Listeners
virtual void registerDeletionListener (PxDeletionListener &observer, const PxDeletionEventFlags &deletionEvents, bool restrictedObjectSet=false)=0
 Register a deletion listener. Listeners will be called whenever an object is deleted. More...
 
virtual void unregisterDeletionListener (PxDeletionListener &observer)=0
 Unregister a deletion listener. More...
 
virtual void registerDeletionListenerObjects (PxDeletionListener &observer, const PxBase *const *observables, PxU32 observableCount)=0
 Register specific objects for deletion events. More...
 
virtual void unregisterDeletionListenerObjects (PxDeletionListener &observer, const PxBase *const *observables, PxU32 observableCount)=0
 Unregister specific objects for deletion events. More...
 
virtual PxPhysicsInsertionCallbackgetPhysicsInsertionCallback ()=0
 Gets PxPhysics object insertion interface. More...
 

Detailed Description

Abstract singleton factory class used for instancing objects in the Physics SDK.

In addition you can use PxPhysics to set global parameters which will effect all scenes and create objects that can be shared across multiple scenes.

You can get an instance of this class by calling PxCreateBasePhysics() or PxCreatePhysics() with pre-registered modules.

See also
PxCreatePhysics() PxCreateBasePhysics() PxScene PxVisualizationParameter

Constructor & Destructor Documentation

◆ ~PxPhysics()

virtual PxPhysics::~PxPhysics ( )
inlinevirtual

Member Function Documentation

◆ createAggregate()

virtual PxAggregate* PxPhysics::createAggregate ( PxU32  maxSize,
bool  enableSelfCollision 
)
pure virtual

Creates an aggregate with the specified maximum size and selfCollision property.

Parameters
[in]maxSizeThe maximum number of actors that may be placed in the aggregate.
[in]enableSelfCollisionWhether the aggregate supports self-collision
Returns
The new aggregate.
See also
PxAggregate

◆ createArticulation()

virtual PxArticulation* PxPhysics::createArticulation ( )
pure virtual

Creates an articulation with all fields initialized to their default values.

Returns
the new articulation
See also
PxArticulation, PxRegisterArticulations

◆ createArticulationReducedCoordinate()

virtual PxArticulationReducedCoordinate* PxPhysics::createArticulationReducedCoordinate ( )
pure virtual

Creates a reduced coordinate articulation with all fields initialized to their default values.

Returns
the new articulation
See also
PxArticulationReducedCoordinate, PxRegisterArticulationsReducedCoordinate

◆ createBVHStructure()

virtual PxBVHStructure* PxPhysics::createBVHStructure ( PxInputStream stream)
pure virtual

Creates a bounding volume hierarchy structure.

Parameters
[in]streamThe stream to load the BVH structure from.
Returns
The new BVH structure.
See also
PxBVHStructure PxInputStream

◆ createConstraint()

virtual PxConstraint* PxPhysics::createConstraint ( PxRigidActor actor0,
PxRigidActor actor1,
PxConstraintConnector connector,
const PxConstraintShaderTable shaders,
PxU32  dataSize 
)
pure virtual

Creates a constraint shader.

Note
A constraint shader will get added automatically to the scene the two linked actors belong to. Either, but not both, of actor0 and actor1 may be NULL to denote attachment to the world.
Parameters
[in]actor0The first actor
[in]actor1The second actor
[in]connectorThe connector object, which the SDK uses to communicate with the infrastructure for the constraint
[in]shadersThe shader functions for the constraint
[in]dataSizeThe size of the data block for the shader
Returns
The new shader.
See also
PxConstraint

◆ createConvexMesh()

virtual PxConvexMesh* PxPhysics::createConvexMesh ( PxInputStream stream)
pure virtual

Creates a convex mesh object.

This can then be instanced into PxShape objects.

Parameters
[in]streamThe stream to load the convex mesh from.
Returns
The new convex mesh.
See also
PxConvexMesh PxConvexMesh.release() PxInputStream createTriangleMesh() PxConvexMeshGeometry PxShape

◆ createHeightField()

virtual PxHeightField* PxPhysics::createHeightField ( PxInputStream stream)
pure virtual

Creates a heightfield object from previously cooked stream.

This can then be instanced into PxShape objects.

Parameters
[in]streamThe heightfield mesh stream.
Returns
The new heightfield.
See also
PxHeightField PxHeightField.release() PxInputStream PxRegisterHeightFields

◆ createMaterial()

virtual PxMaterial* PxPhysics::createMaterial ( PxReal  staticFriction,
PxReal  dynamicFriction,
PxReal  restitution 
)
pure virtual

Creates a new material with default properties.

Returns
The new material.
Parameters
[in]staticFrictionThe coefficient of static friction
[in]dynamicFrictionThe coefficient of dynamic friction
[in]restitutionThe coefficient of restitution
See also
PxMaterial

◆ createPruningStructure()

virtual PxPruningStructure* PxPhysics::createPruningStructure ( PxRigidActor *const *  actors,
PxU32  nbActors 
)
pure virtual

Creates a pruning structure from actors.

Note
Every provided actor needs at least one shape with the eSCENE_QUERY_SHAPE flag set.
Both static and dynamic actors can be provided.
It is not allowed to pass in actors which are already part of a scene.
Articulation links cannot be provided.
Parameters
[in]actorsArray of actors to add to the pruning structure. Must be non NULL.
[in]nbActorsNumber of actors in the array. Must be >0.
Returns
Pruning structure created from given actors, or NULL if any of the actors did not comply with the above requirements.
See also
PxActor PxPruningStructure

◆ createRigidDynamic()

virtual PxRigidDynamic* PxPhysics::createRigidDynamic ( const PxTransform pose)
pure virtual

Creates a dynamic rigid actor with the specified pose and all other fields initialized to their default values.

Parameters
[in]poseThe initial pose of the actor. Must be a valid transform
See also
PxRigidDynamic

◆ createRigidStatic()

virtual PxRigidStatic* PxPhysics::createRigidStatic ( const PxTransform pose)
pure virtual

Creates a static rigid actor with the specified pose and all other fields initialized to their default values.

Parameters
[in]poseThe initial pose of the actor. Must be a valid transform
See also
PxRigidStatic

◆ createScene()

virtual PxScene* PxPhysics::createScene ( const PxSceneDesc sceneDesc)
pure virtual

Creates a scene.

Note
Every scene uses a Thread Local Storage slot. This imposes a platform specific limit on the number of scenes that can be created.
Parameters
[in]sceneDescScene descriptor. See PxSceneDesc
Returns
The new scene object.
See also
PxScene PxScene.release() PxSceneDesc

◆ createShape() [1/2]

PX_FORCE_INLINE PxShape* PxPhysics::createShape ( const PxGeometry geometry,
const PxMaterial material,
bool  isExclusive = false,
PxShapeFlags  shapeFlags = PxShapeFlag::eVISUALIZATION | PxShapeFlag::eSCENE_QUERY_SHAPE | PxShapeFlag::eSIMULATION_SHAPE 
)
inline

Creates a shape which may be attached to multiple actors.

The shape will be created with a reference count of 1.

Parameters
[in]geometryThe geometry for the shape
[in]materialThe material for the shape
[in]isExclusiveWhether this shape is exclusive to a single actor or maybe be shared
[in]shapeFlagsThe PxShapeFlags to be set

Shared shapes are not mutable when they are attached to an actor

See also
PxShape

References geometry.

◆ createShape() [2/2]

virtual PxShape* PxPhysics::createShape ( const PxGeometry geometry,
PxMaterial *const *  materials,
PxU16  materialCount,
bool  isExclusive = false,
PxShapeFlags  shapeFlags = PxShapeFlag::eVISUALIZATION|PxShapeFlag::eSCENE_QUERY_SHAPE|PxShapeFlag::eSIMULATION_SHAPE 
)
pure virtual

Creates a shape which may be attached to multiple actors.

The shape will be created with a reference count of 1.

Parameters
[in]geometryThe geometry for the shape
[in]materialsThe materials for the shape
[in]materialCountThe number of materials
[in]isExclusiveWhether this shape is exclusive to a single actor or may be shared
[in]shapeFlagsThe PxShapeFlags to be set

Shared shapes are not mutable when they are attached to an actor

See also
PxShape

◆ createTriangleMesh()

virtual PxTriangleMesh* PxPhysics::createTriangleMesh ( PxInputStream stream)
pure virtual

Creates a triangle mesh object.

This can then be instanced into PxShape objects.

Parameters
[in]streamThe triangle mesh stream.
Returns
The new triangle mesh.
See also
PxTriangleMesh PxMeshPreprocessingFlag PxTriangleMesh.release() PxInputStream PxTriangleMeshFlag

◆ getBVHStructures()

virtual PxU32 PxPhysics::getBVHStructures ( PxBVHStructure **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of bounding volume hierarchy structure pointers to a user buffer.

Returns the number of pointers written.

The ordering of the BVH structures in the array is not specified.

Parameters
[out]userBufferThe buffer to receive BVH structure pointers.
[in]bufferSizeThe number of BVH structure pointers which can be stored in the buffer.
[in]startIndexIndex of first BVH structure pointer to be retrieved
Returns
The number of BVH structure pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbBVHStructures() PxBVHStructure

◆ getConvexMeshes()

virtual PxU32 PxPhysics::getConvexMeshes ( PxConvexMesh **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of convex mesh pointers to a user buffer.

Returns the number of pointers written.

The ordering of the convex meshes in the array is not specified.

Parameters
[out]userBufferThe buffer to receive convex mesh pointers.
[in]bufferSizeThe number of convex mesh pointers which can be stored in the buffer.
[in]startIndexIndex of first convex mesh pointer to be retrieved
Returns
The number of convex mesh pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbConvexMeshes() PxConvexMesh

◆ getFoundation()

virtual PxFoundation& PxPhysics::getFoundation ( )
pure virtual

Retrieves the Foundation instance.

Returns
A reference to the Foundation object.

◆ getHeightFields()

virtual PxU32 PxPhysics::getHeightFields ( PxHeightField **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of heightfield pointers to a user buffer.

Returns the number of pointers written.

The ordering of the heightfields in the array is not specified.

Parameters
[out]userBufferThe buffer to receive heightfield pointers.
[in]bufferSizeThe number of heightfield pointers which can be stored in the buffer.
[in]startIndexIndex of first heightfield pointer to be retrieved
Returns
The number of heightfield pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbHeightFields() PxHeightField

◆ getMaterials()

virtual PxU32 PxPhysics::getMaterials ( PxMaterial **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of material pointers to a user buffer.

Returns the number of pointers written.

The ordering of the materials in the array is not specified.

Parameters
[out]userBufferThe buffer to receive material pointers.
[in]bufferSizeThe number of material pointers which can be stored in the buffer.
[in]startIndexIndex of first material pointer to be retrieved
Returns
The number of material pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbMaterials() PxMaterial

◆ getNbBVHStructures()

virtual PxU32 PxPhysics::getNbBVHStructures ( ) const
pure virtual

Return the number of bounding volume hierarchy structures that currently exist.

Returns
Number of bounding volume hierarchy structures.
See also
getBVHStructures()

◆ getNbConvexMeshes()

virtual PxU32 PxPhysics::getNbConvexMeshes ( ) const
pure virtual

Return the number of convex meshes that currently exist.

Returns
Number of convex meshes.
See also
getConvexMeshes()

◆ getNbHeightFields()

virtual PxU32 PxPhysics::getNbHeightFields ( ) const
pure virtual

Return the number of heightfields that currently exist.

Returns
Number of heightfields.
See also
getHeightFields()

◆ getNbMaterials()

virtual PxU32 PxPhysics::getNbMaterials ( ) const
pure virtual

Return the number of materials that currently exist.

Returns
Number of materials.
See also
getMaterials()

◆ getNbScenes()

virtual PxU32 PxPhysics::getNbScenes ( ) const
pure virtual

Gets number of created scenes.

Returns
The number of scenes created.
See also
getScene()

◆ getNbShapes()

virtual PxU32 PxPhysics::getNbShapes ( ) const
pure virtual

Return the number of shapes that currently exist.

Returns
Number of shapes.
See also
getShapes()

◆ getNbTriangleMeshes()

virtual PxU32 PxPhysics::getNbTriangleMeshes ( ) const
pure virtual

Return the number of triangle meshes that currently exist.

Returns
Number of triangle meshes.
See also
getTriangleMeshes()

◆ getPhysicsInsertionCallback()

virtual PxPhysicsInsertionCallback& PxPhysics::getPhysicsInsertionCallback ( )
pure virtual

Gets PxPhysics object insertion interface.

The insertion interface is needed ie. for PxCooking::createTriangleMesh, this allows runtime mesh creation. This is not advised to do, please use offline cooking if possible.

See also
PxCooking::createTriangleMesh PxCooking::createHeightfield

◆ getScenes()

virtual PxU32 PxPhysics::getScenes ( PxScene **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of scene pointers to a user buffer.

Returns the number of pointers written.

The ordering of the scene pointers in the array is not specified.

Parameters
[out]userBufferThe buffer to receive scene pointers.
[in]bufferSizeThe number of scene pointers which can be stored in the buffer.
[in]startIndexIndex of first scene pointer to be retrieved
Returns
The number of scene pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbScenes() PxScene

◆ getShapes()

virtual PxU32 PxPhysics::getShapes ( PxShape **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of shape pointers to a user buffer.

Returns the number of pointers written.

The ordering of the shapes in the array is not specified.

Parameters
[out]userBufferThe buffer to receive shape pointers.
[in]bufferSizeThe number of shape pointers which can be stored in the buffer.
[in]startIndexIndex of first shape pointer to be retrieved
Returns
The number of shape pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbShapes() PxShape

◆ getTolerancesScale()

virtual const PxTolerancesScale& PxPhysics::getTolerancesScale ( ) const
pure virtual

Returns the simulation tolerance parameters.

Returns
The current simulation tolerance parameters.

◆ getTriangleMeshes()

virtual PxU32 PxPhysics::getTriangleMeshes ( PxTriangleMesh **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Writes the array of triangle mesh pointers to a user buffer.

Returns the number of pointers written.

The ordering of the triangle meshes in the array is not specified.

Parameters
[out]userBufferThe buffer to receive triangle mesh pointers.
[in]bufferSizeThe number of triangle mesh pointers which can be stored in the buffer.
[in]startIndexIndex of first mesh pointer to be retrieved
Returns
The number of triangle mesh pointers written to userBuffer, this should be less or equal to bufferSize.
See also
getNbTriangleMeshes() PxTriangleMesh

◆ registerDeletionListener()

virtual void PxPhysics::registerDeletionListener ( PxDeletionListener observer,
const PxDeletionEventFlags deletionEvents,
bool  restrictedObjectSet = false 
)
pure virtual

Register a deletion listener. Listeners will be called whenever an object is deleted.

It is illegal to register or unregister a deletion listener while deletions are being processed.

Note
By default a registered listener will receive events from all objects. Set the restrictedObjectSet parameter to true on registration and use registerDeletionListenerObjects to restrict the received events to specific objects.
The deletion events are only supported on core PhysX objects. In general, objects in extension modules do not provide this functionality, however, in the case of PxJoint objects, the underlying PxConstraint will send the events.
Parameters
[in]observerObserver object to send notifications to.
[in]deletionEventsThe deletion event types to get notified of.
[in]restrictedObjectSetIf false, the deletion listener will get events from all objects, else the objects to receive events from have to be specified explicitly through registerDeletionListenerObjects.
See also
PxDeletionListener unregisterDeletionListener

◆ registerDeletionListenerObjects()

virtual void PxPhysics::registerDeletionListenerObjects ( PxDeletionListener observer,
const PxBase *const *  observables,
PxU32  observableCount 
)
pure virtual

Register specific objects for deletion events.

This method allows for a deletion listener to limit deletion events to specific objects only.

Note
It is illegal to register or unregister objects while deletions are being processed.
The deletion listener has to be registered through registerDeletionListener() and configured to support restricted objects sets prior to this method being used.
Parameters
[in]observerObserver object to send notifications to.
[in]observablesList of objects for which to receive deletion events. Only PhysX core objects are supported. In the case of PxJoint objects, the underlying PxConstraint can be used to get the events.
[in]observableCountSize of the observables list.
See also
PxDeletionListener unregisterDeletionListenerObjects

◆ release()

virtual void PxPhysics::release ( )
pure virtual

Destroys the instance it is called on.

Use this release method to destroy an instance of this class. Be sure to not keep a reference to this object after calling release. Avoid release calls while a scene is simulating (in between simulate() and fetchResults() calls).

Note that this must be called once for each prior call to PxCreatePhysics, as there is a reference counter. Also note that you mustn't destroy the allocator or the error callback (if available) until after the reference count reaches 0 and the SDK is actually removed.

Releasing an SDK will also release any scenes, triangle meshes, convex meshes, heightfields and shapes created through it, provided the user hasn't already done so.

Note
This function is required to be called to release foundation usage.
See also
PxCreatePhysics()

◆ unregisterDeletionListener()

virtual void PxPhysics::unregisterDeletionListener ( PxDeletionListener observer)
pure virtual

Unregister a deletion listener.

It is illegal to register or unregister a deletion listener while deletions are being processed.

Parameters
[in]observerObserver object to send notifications to
See also
PxDeletionListener registerDeletionListener

◆ unregisterDeletionListenerObjects()

virtual void PxPhysics::unregisterDeletionListenerObjects ( PxDeletionListener observer,
const PxBase *const *  observables,
PxU32  observableCount 
)
pure virtual

Unregister specific objects for deletion events.

This method allows to clear previously registered objects for a deletion listener (see registerDeletionListenerObjects()).

Note
It is illegal to register or unregister objects while deletions are being processed.
The deletion listener has to be registered through registerDeletionListener() and configured to support restricted objects sets prior to this method being used.
Parameters
[in]observerObserver object to stop sending notifications to.
[in]observablesList of objects for which to not receive deletion events anymore.
[in]observableCountSize of the observables list.
See also
PxDeletionListener registerDeletionListenerObjects

The documentation for this class was generated from the following file: