An object which "owns" a volume of world space. More...
#include <RenderVolume.h>
Public Member Functions | |
virtual physx::PxBounds3 | getBounds () const =0 |
Returns AABB covering all objects in this render volume, it's updated each frame during Scene::fetchResults(). | |
virtual bool | getAffectsAllIofx () const =0 |
Returns true if the volume affects all IOFX assets. | |
virtual bool | addIofxAsset (IofxAsset &iofx)=0 |
Adds IOFX asset to volume's list of affected IOFX assets, returns false on failure. | |
virtual void | setPosition (const PxVec3 &pos)=0 |
Moves the render volume while maintaining its dimensions. | |
virtual void | setOwnershipBounds (const PxBounds3 &b)=0 |
Directly assigns a new AABB ownership volume. | |
virtual PxBounds3 | getOwnershipBounds () const =0 |
Retrieves the configured AABB bounds of the volume. Call getBounds() for the "live" bounds. | |
virtual IofxActor *const | lockIofxActorList (uint32_t &count)=0 |
Retrieve list of IOFX actors owned by this volume (one per IOFX Asset per IOS actor) | |
virtual void | unlockIofxActorList ()=0 |
Unlock IOFX actors which where locked by calling lockIofxActorList. | |
virtual IofxAsset *const | getIofxAssetList (uint32_t &count) const =0 |
Retrieve list of volume's affected IOFX assets. | |
virtual PxVec3 | getPosition () const =0 |
Returns center of ownership bounds. | |
virtual uint32_t | getPriority () const =0 |
Returns priority of volume. | |
virtual bool | affectsIofxAsset (const IofxAsset &iofx) const =0 |
Returns true if this volume affects the specified IOFX asset. | |
Protected Member Functions | |
virtual | ~RenderVolume () |
An object which "owns" a volume of world space.
Any particles which enter the owned volume will be migrated to an IOFX actor owned by this object (if the particle's IOFX asset is affected by this volume).
When volumes overlap, their relative priorities break the tie. If multiple volumes have the same priority, the tie breaker goes to the volume that owns the particle.
virtual nvidia::apex::RenderVolume::~RenderVolume | ( | ) | [inline, protected, virtual] |
virtual bool nvidia::apex::RenderVolume::addIofxAsset | ( | IofxAsset & | iofx | ) | [pure virtual] |
Adds IOFX asset to volume's list of affected IOFX assets, returns false on failure.
virtual bool nvidia::apex::RenderVolume::affectsIofxAsset | ( | const IofxAsset & | iofx | ) | const [pure virtual] |
Returns true if this volume affects the specified IOFX asset.
Callers must acquire render lock of the volume before calling this function, for thread safety.
virtual bool nvidia::apex::RenderVolume::getAffectsAllIofx | ( | ) | const [pure virtual] |
Returns true if the volume affects all IOFX assets.
virtual physx::PxBounds3 nvidia::apex::RenderVolume::getBounds | ( | ) | const [pure virtual] |
Returns AABB covering all objects in this render volume, it's updated each frame during Scene::fetchResults().
virtual IofxAsset* const nvidia::apex::RenderVolume::getIofxAssetList | ( | uint32_t & | count | ) | const [pure virtual] |
Retrieve list of volume's affected IOFX assets.
Returns count of 0 if empty or volume affects all IOFX assets. Returned pointer is undefined when count is 0.
The returned buffer not thread-safe, and is only valid until the next APEX API call that steps the simulation or modifies the number of IOFX assets in a scene.
virtual PxBounds3 nvidia::apex::RenderVolume::getOwnershipBounds | ( | ) | const [pure virtual] |
Retrieves the configured AABB bounds of the volume. Call getBounds() for the "live" bounds.
virtual PxVec3 nvidia::apex::RenderVolume::getPosition | ( | ) | const [pure virtual] |
Returns center of ownership bounds.
virtual uint32_t nvidia::apex::RenderVolume::getPriority | ( | ) | const [pure virtual] |
Returns priority of volume.
virtual IofxActor* const nvidia::apex::RenderVolume::lockIofxActorList | ( | uint32_t & | count | ) | [pure virtual] |
Retrieve list of IOFX actors owned by this volume (one per IOFX Asset per IOS actor)
Returns count of 0 if empty. Returned pointer is undefined when count is 0.
The bounds of each of these IOFX is guaranteed to be within the bounds of the volume itself. Calling the updateRenderResources and dispatchRenderResources() methods of the volume will implicitly call the same methods of each of these IOFX actors, so there is no need to iterate over them for rendering purposes, unless you require special logic per IOFX.
It is not necessary to release these actors, they will be released automatically when their volume, their IOFX Asset, or their host IOS actor are released.
This call is not thread-safe. The returned buffer is only valid until the next APEX API call that steps the simulation or modifies the number of IOFX actors in a scene.
virtual void nvidia::apex::RenderVolume::setOwnershipBounds | ( | const PxBounds3 & | b | ) | [pure virtual] |
Directly assigns a new AABB ownership volume.
virtual void nvidia::apex::RenderVolume::setPosition | ( | const PxVec3 & | pos | ) | [pure virtual] |
Moves the render volume while maintaining its dimensions.
virtual void nvidia::apex::RenderVolume::unlockIofxActorList | ( | ) | [pure virtual] |
Unlock IOFX actors which where locked by calling lockIofxActorList.