52    virtual int                     GetIntersectingSubShapes(
const AABox &inBox, 
uint *outSubShapeIndices, 
int inMaxSubShapeIndices) 
const override;
 
   55    virtual int                     GetIntersectingSubShapes(
const OrientedBox &inBox, 
uint *outSubShapeIndices, 
int inMaxSubShapeIndices) 
const override;
 
   58    virtual void                    SaveBinaryState(
StreamOut &inStream) 
const override;
 
   61    virtual Stats                   GetStats()
 const override                               { 
return Stats(
sizeof(*
this) + mSubShapes.size() * 
sizeof(
SubShape) + mNodes.size() * 
sizeof(Node), 0); }
 
   64    static void                     sRegister();
 
   68    virtual void                    RestoreBinaryState(
StreamIn &inStream) 
override;
 
   72    template <
class BoxType>
 
   73    struct GetIntersectingSubShapesVisitorSC : 
public GetIntersectingSubShapesVisitor<BoxType>
 
   75        using GetIntersectingSubShapesVisitor<BoxType>::GetIntersectingSubShapesVisitor;
 
   77        JPH_INLINE 
bool             ShouldVisitNode(
int inStackTop)
 const 
   85            UVec4 collides = GetIntersectingSubShapesVisitor<BoxType>::TestBounds(inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
 
   92    static void                     sPartition(
uint *ioBodyIdx, 
AABox *ioBounds, 
int inNumber, 
int &outMidPoint);
 
   97    static void                     sPartition4(
uint *ioBodyIdx, 
AABox *ioBounds, 
int inBegin, 
int inEnd, 
int *outSplit);
 
  100    static void                     sCollideCompoundVsShape(
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);
 
  101    static void                     sCollideShapeVsCompound(
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);
 
  107    template <
class Visitor>
 
  108    JPH_INLINE 
void                 WalkTree(Visitor &ioVisitor) 
const;                     
 
  113        IS_SUBSHAPE                 = 0x80000000,                                           
 
  114        INVALID_NODE                = 0x7fffffff,                                           
 
  120        void                        SetChildBounds(
uint inIndex, 
const AABox &inBounds);    
 
  121        void                        SetChildInvalid(
uint inIndex);                          
 
  129        uint32                      mNodeProperties[4];                                     
 
  132    static_assert(
sizeof(Node) == 64, 
"Node should be 64 bytes");
 
#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_NAMESPACE_BEGIN
Definition: Core.h:372
 
uint16 HalfFloat
Definition: HalfFloat.h:11
 
#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:77
 
JPH_INLINE int CountAndSortTrues(UVec4Arg inValue, UVec4 &ioIdentifiers)
Definition: SortReverseAndStore.h:39
 
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
 
Base class for a compound shape.
Definition: CompoundShape.h:49
 
Base class settings to construct a compound shape.
Definition: CompoundShape.h:18
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
Oriented box.
Definition: OrientedBox.h:18
 
Specialization of cast result against a shape.
Definition: CastResult.h:30
 
Settings to be passed with a ray cast.
Definition: RayCast.h:70
 
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:186
 
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
 
Definition: StaticCompoundShape.h:33
 
JPH_OVERRIDE_NEW_DELETE StaticCompoundShape()
Constructor.
Definition: StaticCompoundShape.h:38
 
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition: StaticCompoundShape.h:61
 
Class that constructs a StaticCompoundShape. Note that if you only want a compound of 1 shape,...
Definition: StaticCompoundShape.h:18
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
Definition: SubShapeID.h:108
 
Definition: TempAllocator.h:16
 
constexpr int cStackSize
Stack size to use during WalkHeightField.
Definition: HeightFieldShape.h:26
 
Definition: CompoundShape.h:138
 
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition: Shape.h:408
 
Definition: ShapeCast.h:69