9#ifdef JPH_DEBUG_RENDERER 
   62    void                            DetermineMinAndMaxSample(
float &outMinValue, 
float &outMaxValue, 
float &outQuantizationScale) const;
 
   67    uint32                          CalculateBitsPerSampleForError(
float inMaxError) const;
 
   76    float                           mMinHeightValue = FLT_MAX;
 
   79    float                           mMaxHeightValue = -FLT_MAX;
 
  107    float                           mActiveEdgeCosThresholdAngle = 0.996195f;   
 
  138    virtual AABox                   GetLocalBounds() 
const override;
 
  156    virtual Vec3                    GetSurfaceNormal(
const SubShapeID &inSubShapeID, 
Vec3Arg inLocalSurfacePosition) 
const override;
 
  159    virtual void                    GetSupportingFace(
const SubShapeID &inSubShapeID, 
Vec3Arg inDirection, 
Vec3Arg inScale, 
Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) 
const override;
 
  164#ifdef JPH_DEBUG_RENDERER 
  177    virtual void                    CollideSoftBodyVertices(
Mat44Arg inCenterOfMassTransform, 
Vec3Arg inScale, 
SoftBodyVertex *ioVertices, 
uint inNumVertices, 
float inDeltaTime, 
Vec3Arg inDisplacementDueToGravity, 
int inCollidingShapeIndex) 
const override;
 
  180    virtual void                    GetTrianglesStart(GetTrianglesContext &ioContext, 
const AABox &inBox, 
Vec3Arg inPositionCOM, 
QuatArg inRotation, 
Vec3Arg inScale) 
const override;
 
  183    virtual int                     GetTrianglesNext(GetTrianglesContext &ioContext, 
int inMaxTrianglesRequested, 
Float3 *outTriangleVertices, 
const PhysicsMaterial **outMaterials = 
nullptr) 
const override;
 
  190    bool                            IsNoCollision(
uint inX, 
uint inY) 
const;
 
  194    bool                            ProjectOntoSurface(
Vec3Arg inLocalPosition, 
Vec3 &outSurfacePosition, 
SubShapeID &outSubShapeID) 
const;
 
  208    void                            GetHeights(
uint inX, 
uint inY, 
uint inSizeX, 
uint inSizeY, 
float *outHeights, intptr_t inHeightsStride) 
const;
 
  221    void                            SetHeights(
uint inX, 
uint inY, 
uint inSizeX, 
uint inSizeY, 
const float *inHeights, intptr_t inHeightsStride, 
TempAllocator &inAllocator, 
float inActiveEdgeCosThresholdAngle = 0.996195f);
 
  233    void                            GetMaterials(
uint inX, 
uint inY, 
uint inSizeX, 
uint inSizeY, 
uint8 *outMaterials, intptr_t inMaterialsStride) 
const;
 
  249    virtual void                    SaveBinaryState(
StreamOut &inStream) 
const override;
 
  254    virtual Stats                   GetStats() 
const override;
 
  259#ifdef JPH_DEBUG_RENDERER 
  265    static void                     sRegister();
 
  269    virtual void                    RestoreBinaryState(
StreamIn &inStream) 
override;
 
  279    void                            AllocateBuffers();
 
  282    void                            CalculateActiveEdges(
uint inX, 
uint inY, 
uint inSizeX, 
uint inSizeY, 
const float *inHeights, 
uint inHeightsStartX, 
uint inHeightsStartY, intptr_t inHeightsStride, 
float inHeightsScale, 
float inActiveEdgeCosThresholdAngle, 
TempAllocator &inAllocator);
 
  291    inline uint                     GetNumBlocks()
 const                        { 
return mSampleCount / mBlockSize; }
 
  297    static inline void              sGetRangeBlockOffsetAndStride(
uint inNumBlocks, 
uint inMaxLevel, 
uint &outRangeBlockOffset, 
uint &outRangeBlockStride);
 
  300    inline void                     GetBlockOffsetAndScale(
uint inBlockX, 
uint inBlockY, 
uint inRangeBlockOffset, 
uint inRangeBlockStride, 
float &outBlockOffset, 
float &outBlockScale) 
const;
 
  306    inline Vec3                     GetPosition(
uint inX, 
uint inY, 
float inBlockOffset, 
float inBlockScale, 
bool &outNoCollision) 
const;
 
  309    uint                            GetSubShapeIDBits() 
const;
 
  313    inline void                     DecodeSubShapeID(
const SubShapeID &inSubShapeID, 
uint &outX, 
uint &outY, 
uint &outTriangle) 
const;
 
  319    static void                     sCollideConvexVsHeightField(
const Shape *inShape1, 
const Shape *inShape2, 
Vec3Arg inScale1, 
Vec3Arg inScale2, 
Mat44Arg inCenterOfMassTransform1, 
Mat44Arg inCenterOfMassTransform2, 
const SubShapeIDCreator &inSubShapeIDCreator1, 
const SubShapeIDCreator &inSubShapeIDCreator2, 
const CollideShapeSettings &inCollideShapeSettings, 
CollideShapeCollector &ioCollector, 
const ShapeFilter &inShapeFilter);
 
  320    static void                     sCollideSphereVsHeightField(
const Shape *inShape1, 
const Shape *inShape2, 
Vec3Arg inScale1, 
Vec3Arg inScale2, 
Mat44Arg inCenterOfMassTransform1, 
Mat44Arg inCenterOfMassTransform2, 
const SubShapeIDCreator &inSubShapeIDCreator1, 
const SubShapeIDCreator &inSubShapeIDCreator2, 
const CollideShapeSettings &inCollideShapeSettings, 
CollideShapeCollector &ioCollector, 
const ShapeFilter &inShapeFilter);
 
  326    template <
class Visitor>
 
  327    void                            WalkHeightField(Visitor &ioVisitor) 
const;
 
  330    struct alignas(16) RangeBlock
 
  337    inline void                     GetRangeBlock(
uint inBlockX, 
uint inBlockY, 
uint inRangeBlockOffset, 
uint inRangeBlockStride, RangeBlock *&outBlock, 
uint &outIndexInBlock);
 
  340    static const uint               sGridOffsets[];
 
  350    uint32                          mHeightSamplesSize = 0;                     
 
  351    uint32                          mRangeBlocksSize = 0;                       
 
  352    uint32                          mActiveEdgesSize = 0;                       
 
  353    uint8                           mBitsPerSample = 8;                         
 
  354    uint8                           mSampleMask = 0xff;                         
 
  357    RangeBlock *                    mRangeBlocks = 
nullptr;                     
 
  358    uint8 *                         mHeightSamples = 
nullptr;                   
 
  359    uint8 *                         mActiveEdges = 
nullptr;                     
 
  364    uint32                          mNumBitsPerMaterialIndex = 0;               
 
  366#ifdef JPH_DEBUG_RENDERER 
  369    mutable bool                    mCachedUseMaterialColors = 
false;           
 
std::uint8_t uint8
Definition: Core.h:453
 
#define JPH_EXPORT
Definition: Core.h:236
 
unsigned int uint
Definition: Core.h:452
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
std::uint32_t uint32
Definition: Core.h:455
 
#define JPH_IF_DEBUG_RENDERER(...)
Definition: Core.h:536
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
std::uint16_t uint16
Definition: Core.h:454
 
#define JPH_ASSERT(...)
Definition: IssueReporting.h:33
 
uint CountLeadingZeros(uint32 inValue)
Compute the number of leading zero bits (how many high bits are zero)
Definition: Math.h:131
 
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition: Memory.h:31
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:109
 
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition: Shape.h:74
 
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition: Shape.h:57
 
@ HeightField
Used by HeightFieldShape.
 
Axis aligned box.
Definition: AABox.h:16
 
Settings to be passed with a collision query.
Definition: CollideShape.h:94
 
Virtual interface that allows collecting multiple collision results.
Definition: CollisionCollector.h:45
 
Class that holds an RGBA color with 8-bits per component.
Definition: Color.h:16
 
Base class for all convex shapes. Defines a virtual interface.
Definition: ConvexShape.h:36
 
Definition: DebugRenderer.h:47
 
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition: Float3.h:13
 
Definition: HeightFieldShape.cpp:1701
 
Definition: HeightFieldShape.h:116
 
const PhysicsMaterialList & GetMaterialList() const
Get the current list of materials, the indices returned by GetMaterials() will index into this list.
Definition: HeightFieldShape.h:224
 
uint GetSampleCount() const
Get the size of the height field. Note that this will always be rounded up to the nearest multiple of...
Definition: HeightFieldShape.h:132
 
virtual float GetInnerRadius() const override
Definition: HeightFieldShape.h:144
 
float GetMaxHeightValue() const
Definition: HeightFieldShape.h:198
 
float GetMinHeightValue() const
Get the range of height values that this height field can encode. Can be used to determine the allowe...
Definition: HeightFieldShape.h:197
 
JPH_OVERRIDE_NEW_DELETE HeightFieldShape()
Constructor.
Definition: HeightFieldShape.h:121
 
static bool sDrawTriangleOutlines
Definition: HeightFieldShape.h:261
 
virtual uint GetSubShapeIDBitsRecursive() const override
Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this ...
Definition: HeightFieldShape.h:141
 
virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
Definition: HeightFieldShape.h:162
 
virtual bool MustBeStatic() const override
Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
Definition: HeightFieldShape.h:129
 
uint GetBlockSize() const
Get the size of a block.
Definition: HeightFieldShape.h:135
 
virtual float GetVolume() const override
Definition: HeightFieldShape.h:257
 
Class that constructs a HeightFieldShape.
Definition: HeightFieldShape.h:40
 
Describes the mass and inertia properties of a body. Used during body construction only.
Definition: MassProperties.h:16
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
Definition: PhysicsMaterial.h:23
 
An infinite plane described by the formula X . Normal + Constant = 0.
Definition: Plane.h:11
 
Specialization of cast result against a shape.
Definition: CastResult.h:30
 
Settings to be passed with a ray cast.
Definition: RayCast.h:70
 
Definition: Reference.h:101
 
Settings to be passed with a shape cast.
Definition: ShapeCast.h:92
 
Filter class.
Definition: ShapeFilter.h:17
 
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition: Shape.h:178
 
Definition: SoftBodyVertex.h:16
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
Definition: SubShapeID.h:108
 
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition: SubShapeID.h:23
 
Definition: TempAllocator.h:16
 
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition: Vec3.inl:107
 
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition: Vec3.inl:118
 
Constants for HeightFieldShape, this was moved out of the HeightFieldShape because of a linker bug.
Definition: HeightFieldShape.h:21
 
constexpr uint cNumBitsXY
A position in the hierarchical grid is defined by a level (which grid), x and y position....
Definition: HeightFieldShape.h:29
 
constexpr uint cMaskBitsXY
Definition: HeightFieldShape.h:30
 
constexpr int cStackSize
Stack size to use during WalkHeightField.
Definition: HeightFieldShape.h:26
 
constexpr uint16 cMaxHeightValue16
This is the maximum allowed height value.
Definition: HeightFieldShape.h:35
 
constexpr float cNoCollisionValue
Value used to create gaps in the height field.
Definition: HeightFieldShape.h:23
 
constexpr uint16 cNoCollisionValue16
When height samples are converted to 16 bit:
Definition: HeightFieldShape.h:34
 
constexpr uint cLevelShift
Definition: HeightFieldShape.h:31
 
Definition: HeightFieldShape.cpp:2372
 
Definition: ShapeCast.h:69