APEX Framework: nvidia::apex::RenderVolume Class Reference

NVIDIA APEX

nvidia::apex::RenderVolume Class Reference

An object which "owns" a volume of world space. More...

#include <RenderVolume.h>

Inheritance diagram for nvidia::apex::RenderVolume:
nvidia::apex::ApexInterface nvidia::apex::RWLockable

List of all members.

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.

Detailed Description

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.


Member Function Documentation

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 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 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::unlockIofxActorList ( ) [pure virtual]

Unlock IOFX actors which where locked by calling lockIofxActorList.

See also:
RenderVolume::lockIofxActorList

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

Generated on Fri Dec 15 2017 13:58:39

Copyright © 2012-2017 NVIDIA Corporation, 2701 San Tomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved.