21 int heightStickWidth,
int heightStickLength,
const void* heightfieldData,
25 initialize(heightStickWidth, heightStickLength, heightfieldData,
26 heightScale, minHeight, maxHeight, upAxis, hdt,
39 btScalar heightScale = maxHeight / 65535;
41 initialize(heightStickWidth, heightStickLength, heightfieldData,
42 heightScale, minHeight, maxHeight, upAxis, hdt,
47 int heightStickWidth,
int heightStickLength,
const void* heightfieldData,
123 btVector3 extent = halfExtents.
dot3(abs_b[0], abs_b[1], abs_b[2]);
126 aabbMin = center - extent;
127 aabbMax = center + extent;
220 return (
int)(x - 0.5);
222 return (
int)(x + 0.5);
263 int quantizedAabbMin[3];
264 int quantizedAabbMax[3];
270 for (
int i = 0; i < 3; ++i)
272 quantizedAabbMin[i]--;
273 quantizedAabbMax[i]++;
285 if (quantizedAabbMin[1] > startX)
286 startX = quantizedAabbMin[1];
287 if (quantizedAabbMax[1] < endX)
288 endX = quantizedAabbMax[1];
289 if (quantizedAabbMin[2] > startJ)
290 startJ = quantizedAabbMin[2];
291 if (quantizedAabbMax[2] < endJ)
292 endJ = quantizedAabbMax[2];
297 if (quantizedAabbMin[0] > startX)
298 startX = quantizedAabbMin[0];
299 if (quantizedAabbMax[0] < endX)
300 endX = quantizedAabbMax[0];
301 if (quantizedAabbMin[2] > startJ)
302 startJ = quantizedAabbMin[2];
303 if (quantizedAabbMax[2] < endJ)
304 endJ = quantizedAabbMax[2];
309 if (quantizedAabbMin[0] > startX)
310 startX = quantizedAabbMin[0];
311 if (quantizedAabbMax[0] < endX)
312 endX = quantizedAabbMax[0];
313 if (quantizedAabbMin[1] > startJ)
314 startJ = quantizedAabbMin[1];
315 if (quantizedAabbMax[1] < endJ)
316 endJ = quantizedAabbMax[1];
326 for (
int j = startJ; j < endJ; j++)
328 for (
int x = startX; x < endX; x++)
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
void quantizeWithClamp(int *out, const btVector3 &point, int isMax) const
given input vector, return quantized version
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
virtual void setLocalScaling(const btVector3 &scaling)
btVector3 dot3(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2) const
bool m_useDiamondSubdivision
const btScalar * m_heightfieldDataFloat
virtual const btVector3 & getLocalScaling() const
virtual void processTriangle(btVector3 *triangle, int partId, int triangleIndex)=0
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
process all triangles within the provided axis-aligned bounding box
virtual ~btHeightfieldTerrainShape()
const btScalar & getY() const
Return the y value.
PHY_ScalarType m_heightDataType
void getVertex(int x, int y, btVector3 &vertex) const
this returns the vertex in bullet-local coordinates
bool m_useZigzagSubdivision
const unsigned char * m_heightfieldDataUnsignedChar
const btScalar & getZ() const
Return the z value.
virtual btScalar getRawHeightFieldValue(int x, int y) const
This returns the "raw" (user's initial) height, not the actual height.
void initialize(int heightStickWidth, int heightStickLength, const void *heightfieldData, btScalar heightScale, btScalar minHeight, btScalar maxHeight, int upAxis, PHY_ScalarType heightDataType, bool flipQuadEdges)
protected initialization
btHeightfieldTerrainShape(int heightStickWidth, int heightStickLength, const void *heightfieldData, btScalar heightScale, btScalar minHeight, btScalar maxHeight, int upAxis, PHY_ScalarType heightDataType, bool flipQuadEdges)
preferred constructor
The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTrian...
static int getQuantized(btScalar x)
btVector3 can be used to represent 3D points and vectors.
const short * m_heightfieldDataShort
btMatrix3x3 absolute() const
Return the matrix with all values non negative.
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...
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
virtual btScalar getMargin() const
void setMax(const btVector3 &other)
Set each element to the max of the current values and the values of another btVector3.
const void * m_heightfieldDataUnknown
const btScalar & getX() const
Return the x value.
void setMin(const btVector3 &other)
Set each element to the min of the current values and the values of another btVector3.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
PHY_ScalarType
PHY_ScalarType enumerates possible scalar types.
int m_heightStickWidth
terrain data