16#ifndef BT_HEIGHTFIELD_TERRAIN_SHAPE_H
17#define BT_HEIGHTFIELD_TERRAIN_SHAPE_H
131 const void* heightfieldData,
btScalar heightScale,
145 const void* heightfieldData,
btScalar heightScale,
157 btHeightfieldTerrainShape(
int heightStickWidth,
int heightStickLength,
const void* heightfieldData,
btScalar maxHeight,
int upAxis,
bool useFloatData,
bool flipQuadEdges);
170 virtual void getAabb(
const btTransform& t, btVector3& aabbMin, btVector3& aabbMax)
const;
192 virtual const char*
getName()
const {
return "HEIGHTFIELD"; }
const void * m_heightfieldDataUnknown
btAlignedObjectArray< Range > m_vboundsGrid
PHY_ScalarType m_heightDataType
virtual void setLocalScaling(const btVector3 &scaling)
in case we receive negative scaling
BT_DECLARE_ALIGNED_ALLOCATOR()
void getVertex(int x, int y, btVector3 &vertex) const
int m_heightStickWidth
terrain data
struct btTriangleInfoMap * m_triangleInfoMap
const unsigned char * getHeightfieldRawData() const
virtual btScalar getRawHeightFieldValue(int x, int y) const
void setTriangleInfoMap(btTriangleInfoMap *map)
void quantizeWithClamp(int *out, const btVector3 &point, int isMax) const
given input vector, return quantized version
void setUseDiamondSubdivision(bool useDiamondSubdivision=true)
virtual ~btHeightfieldTerrainShape()
virtual const char * getName() const
void performRaycast(btTriangleCallback *callback, const btVector3 &raySource, const btVector3 &rayTarget) const
btScalar getUserValue3() const
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
CollisionShape Interface.
bool m_useDiamondSubdivision
btHeightfieldTerrainShape(int heightStickWidth, int heightStickLength, const void *heightfieldData, btScalar heightScale, btScalar minHeight, btScalar maxHeight, int upAxis, PHY_ScalarType heightDataType, bool flipQuadEdges)
preferred constructor
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
void setUserIndex2(int index)
const unsigned char * m_heightfieldDataUnsignedChar
const struct btTriangleInfoMap * getTriangleInfoMap() const
const short * m_heightfieldDataShort
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.
bool m_useZigzagSubdivision
virtual const btVector3 & getLocalScaling() const
void setUseZigzagSubdivision(bool useZigzagSubdivision=true)
could help compatibility with Ogre heightfields. See https://code.google.com/p/bullet/issues/detail?...
bool m_flipTriangleWinding
void setFlipTriangleWinding(bool flipTriangleWinding)
void setUserValue3(btScalar value)
void buildAccelerator(int chunkSize=16)
int getUserIndex2() const
const btScalar * m_heightfieldDataFloat
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
DEGForeachIDComponentCallback callback
The btTriangleInfoMap stores edge angle information for some triangles. You can compute this informat...