RavEngine
Loading...
Searching...
No Matches
physx::PxAggregate Class Referenceabstract

Class to aggregate actors into a single broad-phase entry. More...

#include <PxAggregate.h>

Inheritance diagram for physx::PxAggregate:
[legend]
Collaboration diagram for physx::PxAggregate:
[legend]

Public Member Functions

virtual void release ()=0
 Deletes the aggregate object.
 
virtual bool addActor (PxActor &actor, const PxBVH *bvh=NULL)=0
 Adds an actor to the aggregate object.
 
virtual bool removeActor (PxActor &actor)=0
 Removes an actor from the aggregate object.
 
virtual bool addArticulation (PxArticulationReducedCoordinate &articulation)=0
 Adds an articulation to the aggregate object.
 
virtual bool removeArticulation (PxArticulationReducedCoordinate &articulation)=0
 Removes an articulation from the aggregate object.
 
virtual PxU32 getNbActors () const =0
 Returns the number of actors contained in the aggregate.
 
virtual PX_DEPRECATED PxU32 getMaxNbActors () const =0
 Retrieves max amount of actors that can be contained in the aggregate.
 
virtual PxU32 getMaxNbShapes () const =0
 Retrieves max amount of shapes that can be contained in the aggregate.
 
virtual PxU32 getActors (PxActor **userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const =0
 Retrieve all actors contained in the aggregate.
 
virtual PxScene * getScene ()=0
 Retrieves the scene which this aggregate belongs to.
 
virtual bool getSelfCollision () const =0
 Retrieves aggregate's self-collision flag.
 
virtual const char * getConcreteTypeName () const
 Returns string name of dynamic type.
 
- Public Member Functions inherited from physx::PxBase
template<class T >
T * is ()
 
template<class T >
const T * is () const
 
PX_FORCE_INLINE PxType getConcreteType () const
 Returns concrete type of object.
 
PX_FORCE_INLINE void setBaseFlag (PxBaseFlag::Enum flag, bool value)
 Set PxBaseFlag

 
PX_FORCE_INLINE void setBaseFlags (PxBaseFlags inFlags)
 Set PxBaseFlags

 
PX_FORCE_INLINE PxBaseFlags getBaseFlags () const
 Returns PxBaseFlags.
 
virtual bool isReleasable () const
 Whether the object is subordinate.
 

Public Attributes

void * userData
 user can assign this to whatever, usually to create a 1:1 relationship with a user object.
 

Protected Member Functions

PX_INLINE PxAggregate (PxType concreteType, PxBaseFlags baseFlags)
 
PX_INLINE PxAggregate (PxBaseFlags baseFlags)
 
virtual bool isKindOf (const char *name) const
 Returns whether a given type name matches with the type of this instance.
 
- Protected Member Functions inherited from physx::PxBase
PX_INLINE PxBase (PxType concreteType, PxBaseFlags baseFlags)
 Constructor setting concrete type and base flags.
 
PX_INLINE PxBase (PxBaseFlags baseFlags)
 Deserialization constructor setting base flags.
 
virtual ~PxBase ()
 Destructor.
 
template<class T >
bool typeMatch () const
 

Additional Inherited Members

- Protected Attributes inherited from physx::PxBase
PxType mConcreteType
 
PxBaseFlags mBaseFlags
 
PxU32 mBuiltInRefCount
 

Detailed Description

Class to aggregate actors into a single broad-phase entry.

A PxAggregate object is a collection of PxActors, which will exist as a single entry in the broad-phase structures. This has 3 main benefits:

1) it reduces "broad phase pollution" by allowing a collection of spatially coherent broad-phase entries to be replaced by a single aggregated entry (e.g. a ragdoll or a single actor with a large number of attached shapes).

2) it reduces broad-phase memory usage

3) filtering can be optimized a lot if self-collisions within an aggregate are not needed. For example if you don't need collisions between ragdoll bones, it's faster to simply disable filtering once and for all, for the aggregate containing the ragdoll, rather than filtering out each bone-bone collision in the filter shader.

See also
PxActor, PxPhysics.createAggregate

Member Function Documentation

◆ addActor()

virtual bool physx::PxAggregate::addActor ( PxActor &  actor,
const PxBVH *  bvh = NULL 
)
pure virtual

Adds an actor to the aggregate object.

A warning is output if the total number of actors is reached, or if the incoming actor already belongs to an aggregate.

If the aggregate belongs to a scene, adding an actor to the aggregate also adds the actor to that scene.

If the actor already belongs to a scene, a warning is output and the call is ignored. You need to remove the actor from the scene first, before adding it to the aggregate.

Note
When a BVH is provided the actor shapes are grouped together. The scene query pruning structure inside PhysX SDK will store/update one bound per actor. The scene queries against such an actor will query actor bounds and then make a local space query against the provided BVH, which is in actor's local space.
Parameters
[in]actorThe actor that should be added to the aggregate
[in]bvhBVH for actor shapes. return true if success

Implemented in physx::NpAggregate.

◆ addArticulation()

virtual bool physx::PxAggregate::addArticulation ( PxArticulationReducedCoordinate &  articulation)
pure virtual

Adds an articulation to the aggregate object.

A warning is output if the total number of actors is reached (every articulation link counts as an actor), or if the incoming articulation already belongs to an aggregate.

If the aggregate belongs to a scene, adding an articulation to the aggregate also adds the articulation to that scene.

If the articulation already belongs to a scene, a warning is output and the call is ignored. You need to remove the articulation from the scene first, before adding it to the aggregate.

Parameters
[in]articulationThe articulation that should be added to the aggregate return true if success

Implemented in physx::NpAggregate.

◆ getActors()

virtual PxU32 physx::PxAggregate::getActors ( PxActor **  userBuffer,
PxU32  bufferSize,
PxU32  startIndex = 0 
) const
pure virtual

Retrieve all actors contained in the aggregate.

You can retrieve the number of actor pointers by calling getNbActors()

Parameters
[out]userBufferThe buffer to store the actor pointers.
[in]bufferSizeSize of provided user buffer.
[in]startIndexIndex of first actor pointer to be retrieved
Returns
Number of actor pointers written to the buffer.
See also
PxShape getNbShapes()

Implemented in physx::NpAggregate.

◆ getConcreteTypeName()

virtual const char * physx::PxAggregate::getConcreteTypeName ( ) const
inlinevirtual

Returns string name of dynamic type.

Returns
Class name of most derived type of this object.

Implements physx::PxBase.

◆ getMaxNbActors()

virtual PX_DEPRECATED PxU32 physx::PxAggregate::getMaxNbActors ( ) const
pure virtual

Retrieves max amount of actors that can be contained in the aggregate.

Note
PxAggregate now supports an arbitrary number of actors. This method return PX_MAX_U32 and will be removed in a future release.
Returns
Max actor size.
See also
PxPhysics::createAggregate()
Deprecated:

Implemented in physx::NpAggregate.

◆ getMaxNbShapes()

virtual PxU32 physx::PxAggregate::getMaxNbShapes ( ) const
pure virtual

Retrieves max amount of shapes that can be contained in the aggregate.

Returns
Max shape size.
See also
PxPhysics::createAggregate()

Implemented in physx::NpAggregate.

◆ getNbActors()

virtual PxU32 physx::PxAggregate::getNbActors ( ) const
pure virtual

Returns the number of actors contained in the aggregate.

You can use getActors() to retrieve the actor pointers.

Returns
Number of actors contained in the aggregate.
See also
PxActor getActors()

Implemented in physx::NpAggregate.

◆ getScene()

virtual PxScene * physx::PxAggregate::getScene ( )
pure virtual

Retrieves the scene which this aggregate belongs to.

Returns
Owner Scene. NULL if not part of a scene.
See also
PxScene

Implemented in physx::NpAggregate.

◆ getSelfCollision()

virtual bool physx::PxAggregate::getSelfCollision ( ) const
pure virtual

Retrieves aggregate's self-collision flag.

Returns
self-collision flag

Implemented in physx::NpAggregate.

◆ isKindOf()

virtual bool physx::PxAggregate::isKindOf ( const char *  superClass) const
inlineprotectedvirtual

Returns whether a given type name matches with the type of this instance.

Reimplemented from physx::PxBase.

◆ release()

virtual void physx::PxAggregate::release ( )
pure virtual

Deletes the aggregate object.

Deleting the PxAggregate object does not delete the aggregated actors. If the PxAggregate object belongs to a scene, the aggregated actors are automatically re-inserted in that scene. If you intend to delete both the PxAggregate and its actors, it is best to release the actors first, then release the PxAggregate when it is empty.

Implements physx::PxBase.

Implemented in physx::NpAggregate.

◆ removeActor()

virtual bool physx::PxAggregate::removeActor ( PxActor &  actor)
pure virtual

Removes an actor from the aggregate object.

A warning is output if the incoming actor does not belong to the aggregate. Otherwise the actor is removed from the aggregate. If the aggregate belongs to a scene, the actor is reinserted in that scene. If you intend to delete the actor, it is best to call PxActor::release() directly. That way the actor will be automatically removed from its aggregate (if any) and not reinserted in a scene.

Parameters
[in]actorThe actor that should be removed from the aggregate return true if success

Implemented in physx::NpAggregate.

◆ removeArticulation()

virtual bool physx::PxAggregate::removeArticulation ( PxArticulationReducedCoordinate &  articulation)
pure virtual

Removes an articulation from the aggregate object.

A warning is output if the incoming articulation does not belong to the aggregate. Otherwise the articulation is removed from the aggregate. If the aggregate belongs to a scene, the articulation is reinserted in that scene. If you intend to delete the articulation, it is best to call PxArticulationReducedCoordinate::release() directly. That way the articulation will be automatically removed from its aggregate (if any) and not reinserted in a scene.

Parameters
[in]articulationThe articulation that should be removed from the aggregate return true if success

Implemented in physx::NpAggregate.


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