PxHeightField Class Referenceabstract

A height field class. More...

#include <PxHeightField.h>

Inheritance diagram for PxHeightField:
Collaboration diagram for PxHeightField:

Public Member Functions

virtual PX_PHYSX_COMMON_API void release ()=0
 Decrements the reference count of a height field and releases it if the new reference count is zero. More...
 
virtual PX_PHYSX_COMMON_API PxU32 saveCells (void *destBuffer, PxU32 destBufferSize) const =0
 Writes out the sample data array. More...
 
virtual PX_PHYSX_COMMON_API bool modifySamples (PxI32 startCol, PxI32 startRow, const PxHeightFieldDesc &subfieldDesc, bool shrinkBounds=false)=0
 Replaces a rectangular subfield in the sample data array. More...
 
virtual PX_PHYSX_COMMON_API PxU32 getNbRows () const =0
 Retrieves the number of sample rows in the samples array. More...
 
virtual PX_PHYSX_COMMON_API PxU32 getNbColumns () const =0
 Retrieves the number of sample columns in the samples array. More...
 
virtual PX_PHYSX_COMMON_API PxHeightFieldFormat::Enum getFormat () const =0
 Retrieves the format of the sample data. More...
 
virtual PX_PHYSX_COMMON_API PxU32 getSampleStride () const =0
 Retrieves the offset in bytes between consecutive samples in the array. More...
 
virtual PX_PHYSX_COMMON_API PxReal getConvexEdgeThreshold () const =0
 Retrieves the convex edge threshold. More...
 
virtual PX_PHYSX_COMMON_API PxHeightFieldFlags getFlags () const =0
 Retrieves the flags bits, combined from values of the enum PxHeightFieldFlag. More...
 
virtual PX_PHYSX_COMMON_API PxReal getHeight (PxReal x, PxReal z) const =0
 Retrieves the height at the given coordinates in grid space. More...
 
virtual PX_PHYSX_COMMON_API PxU32 getReferenceCount () const =0
 Returns the reference count for shared heightfields. More...
 
virtual PX_PHYSX_COMMON_API void acquireReference ()=0
 Acquires a counted reference to a heightfield. More...
 
virtual PX_PHYSX_COMMON_API PxMaterialTableIndex getTriangleMaterialIndex (PxTriangleID triangleIndex) const =0
 Returns material table index of given triangle. More...
 
virtual PX_PHYSX_COMMON_API PxVec3 getTriangleNormal (PxTriangleID triangleIndex) const =0
 Returns a triangle face normal for a given triangle index. More...
 
virtual PX_PHYSX_COMMON_API const PxHeightFieldSamplegetSample (PxU32 row, PxU32 column) const =0
 Returns heightfield sample of given row and column. More...
 
virtual PX_PHYSX_COMMON_API PxU32 getTimestamp () const =0
 Returns the number of times the heightfield data has been modified. More...
 
virtual PX_PHYSX_COMMON_API const char * getConcreteTypeName () const
 Returns string name of dynamic type. More...
 
- Public Member Functions inherited from PxBase
template<class T >
T * is ()
 
template<class T >
const T * is () const
 
PX_FORCE_INLINE PxType getConcreteType () const
 Returns concrete type of object. More...
 
PX_FORCE_INLINE void setBaseFlag (PxBaseFlag::Enum flag, bool value)
 Set PxBaseFlag. More...
 
PX_FORCE_INLINE void setBaseFlags (PxBaseFlags inFlags)
 Set PxBaseFlags. More...
 
PX_FORCE_INLINE PxBaseFlags getBaseFlags () const
 Returns PxBaseFlags. More...
 
virtual bool isReleasable () const
 Whether the object is subordinate. More...
 

Protected Member Functions

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

Additional Inherited Members

- Protected Attributes inherited from PxBase
PxType mConcreteType
 
PxBaseFlags mBaseFlags
 

Detailed Description

A height field class.

Height fields work in a similar way as triangle meshes specified to act as height fields, with some important differences:

Triangle meshes can be made of nonuniform geometry, while height fields are regular, rectangular grids. This means that with PxHeightField, you sacrifice flexibility in return for improved performance and decreased memory consumption.

In local space rows extend in X direction, columns in Z direction and height in Y direction.

Like Convexes and TriangleMeshes, HeightFields are referenced by shape instances (see PxHeightFieldGeometry, PxShape).

To avoid duplicating data when you have several instances of a particular height field differently, you do not use this class to represent a height field object directly. Instead, you create an instance of this height field via the PxHeightFieldGeometry and PxShape classes.

Creation

To create an instance of this class call PxPhysics::createHeightField() or PxCooking::createHeightField(const PxHeightFieldDesc&, PxPhysicsInsertionCallback&). To delete it call release(). This is only possible once you have released all of its PxHeightFiedShape instances.

Visualizations:

See also
PxHeightFieldDesc PxHeightFieldGeometry PxShape PxPhysics.createHeightField() PxCooking.createHeightField()

Constructor & Destructor Documentation

◆ PxHeightField() [1/2]

PX_INLINE PxHeightField::PxHeightField ( PxType  concreteType,
PxBaseFlags  baseFlags 
)
inlineprotected

◆ PxHeightField() [2/2]

PX_INLINE PxHeightField::PxHeightField ( PxBaseFlags  baseFlags)
inlineprotected

◆ ~PxHeightField()

virtual PX_PHYSX_COMMON_API PxHeightField::~PxHeightField ( )
inlineprotectedvirtual

Member Function Documentation

◆ acquireReference()

virtual PX_PHYSX_COMMON_API void PxHeightField::acquireReference ( )
pure virtual

Acquires a counted reference to a heightfield.

This method increases the reference count of the heightfield by 1. Decrement the reference count by calling release()

◆ getConcreteTypeName()

virtual PX_PHYSX_COMMON_API const char* PxHeightField::getConcreteTypeName ( ) const
inlinevirtual

Returns string name of dynamic type.

Returns
Class name of most derived type of this object.

Implements PxBase.

◆ getConvexEdgeThreshold()

virtual PX_PHYSX_COMMON_API PxReal PxHeightField::getConvexEdgeThreshold ( ) const
pure virtual

Retrieves the convex edge threshold.

Returns
The convex edge threshold.
See also
PxHeightFieldDesc.convexEdgeThreshold

◆ getFlags()

virtual PX_PHYSX_COMMON_API PxHeightFieldFlags PxHeightField::getFlags ( ) const
pure virtual

Retrieves the flags bits, combined from values of the enum PxHeightFieldFlag.

Returns
The flags bits, combined from values of the enum PxHeightFieldFlag.
See also
PxHeightFieldDesc.flags PxHeightFieldFlag

◆ getFormat()

virtual PX_PHYSX_COMMON_API PxHeightFieldFormat::Enum PxHeightField::getFormat ( ) const
pure virtual

Retrieves the format of the sample data.

Returns
The format of the sample data.
See also
PxHeightFieldDesc.format PxHeightFieldFormat

◆ getHeight()

virtual PX_PHYSX_COMMON_API PxReal PxHeightField::getHeight ( PxReal  x,
PxReal  z 
) const
pure virtual

Retrieves the height at the given coordinates in grid space.

Returns
The height at the given coordinates or 0 if the coordinates are out of range.

◆ getNbColumns()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::getNbColumns ( ) const
pure virtual

Retrieves the number of sample columns in the samples array.

Returns
The number of sample columns in the samples array.
See also
PxHeightFieldDesc.nbColumns

◆ getNbRows()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::getNbRows ( ) const
pure virtual

Retrieves the number of sample rows in the samples array.

Returns
The number of sample rows in the samples array.
See also
PxHeightFieldDesc.nbRows

◆ getReferenceCount()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::getReferenceCount ( ) const
pure virtual

Returns the reference count for shared heightfields.

At creation, the reference count of the heightfield is 1. Every shape referencing this heightfield increments the count by 1. When the reference count reaches 0, and only then, the heightfield gets destroyed automatically.

Returns
the current reference count.

◆ getSample()

virtual PX_PHYSX_COMMON_API const PxHeightFieldSample& PxHeightField::getSample ( PxU32  row,
PxU32  column 
) const
pure virtual

Returns heightfield sample of given row and column.

Parameters
[in]rowGiven heightfield row
[in]columnGiven heightfield column
Returns
Heightfield sample

◆ getSampleStride()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::getSampleStride ( ) const
pure virtual

Retrieves the offset in bytes between consecutive samples in the array.

Returns
The offset in bytes between consecutive samples in the array.
See also
PxHeightFieldDesc.sampleStride

◆ getTimestamp()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::getTimestamp ( ) const
pure virtual

Returns the number of times the heightfield data has been modified.

This method returns the number of times modifySamples has been called on this heightfield, so that code that has retained state that depends on the heightfield can efficiently determine whether it has been modified.

Returns
the number of times the heightfield sample data has been modified.

◆ getTriangleMaterialIndex()

virtual PX_PHYSX_COMMON_API PxMaterialTableIndex PxHeightField::getTriangleMaterialIndex ( PxTriangleID  triangleIndex) const
pure virtual

Returns material table index of given triangle.

Note
This function takes a post cooking triangle index.
Parameters
[in]triangleIndex(internal) index of desired triangle
Returns
Material table index, or 0xffff if no per-triangle materials are used

◆ getTriangleNormal()

virtual PX_PHYSX_COMMON_API PxVec3 PxHeightField::getTriangleNormal ( PxTriangleID  triangleIndex) const
pure virtual

Returns a triangle face normal for a given triangle index.

Note
This function takes a post cooking triangle index.
Parameters
[in]triangleIndex(internal) index of desired triangle
Returns
Triangle normal for a given triangle index

◆ isKindOf()

virtual PX_PHYSX_COMMON_API bool PxHeightField::isKindOf ( const char *  superClass) const
inlineprotectedvirtual

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

Reimplemented from PxBase.

References PxBase::isKindOf().

◆ modifySamples()

virtual PX_PHYSX_COMMON_API bool PxHeightField::modifySamples ( PxI32  startCol,
PxI32  startRow,
const PxHeightFieldDesc subfieldDesc,
bool  shrinkBounds = false 
)
pure virtual

Replaces a rectangular subfield in the sample data array.

The user provides the description of a rectangular subfield in subfieldDesc. The data is formatted and arranged as PxHeightFieldDesc.samples.

Parameters
[in]startColFirst cell in the destination heightfield to be modified. Can be negative.
[in]startRowFirst row in the destination heightfield to be modified. Can be negative.
[in]subfieldDescDescription of the source subfield to read the samples from.
[in]shrinkBoundsIf left as false, the bounds will never shrink but only grow. If set to true the bounds will be recomputed from all HF samples at O(nbColums*nbRows) perf cost.
Returns
True on success, false on failure. Failure can occur due to format mismatch.
Note
Modified samples are constrained to the same height quantization range as the original heightfield. Source samples that are out of range of target heightfield will be clipped with no error. PhysX does not keep a mapping from the heightfield to heightfield shapes that reference it. Call PxShape::setGeometry on each shape which references the height field, to ensure that internal data structures are updated to reflect the new geometry. Please note that PxShape::setGeometry does not guarantee correct/continuous behavior when objects are resting on top of old or new geometry.
See also
PxHeightFieldDesc.samples PxShape.setGeometry

◆ release()

virtual PX_PHYSX_COMMON_API void PxHeightField::release ( )
pure virtual

Decrements the reference count of a height field and releases it if the new reference count is zero.

See also
PxPhysics.createHeightField() PxHeightFieldDesc PxHeightFieldGeometry PxShape

Implements PxBase.

◆ saveCells()

virtual PX_PHYSX_COMMON_API PxU32 PxHeightField::saveCells ( void *  destBuffer,
PxU32  destBufferSize 
) const
pure virtual

Writes out the sample data array.

The user provides destBufferSize bytes storage at destBuffer. The data is formatted and arranged as PxHeightFieldDesc.samples.

Parameters
[out]destBufferThe destination buffer for the sample data.
[in]destBufferSizeThe size of the destination buffer.
Returns
The number of bytes written.
See also
PxHeightFieldDesc.samples

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