50    virtual int                     GetIntersectingSubShapes(
const AABox &inBox, 
uint *outSubShapeIndices, 
int inMaxSubShapeIndices) 
const override;
 
   53    virtual int                     GetIntersectingSubShapes(
const OrientedBox &inBox, 
uint *outSubShapeIndices, 
int inMaxSubShapeIndices) 
const override;
 
   56    virtual void                    SaveBinaryState(
StreamOut &inStream) 
const override;
 
   59    virtual Stats                   GetStats()
 const override                               { 
return Stats(
sizeof(*
this) + mSubShapes.size() * 
sizeof(
SubShape) + mSubShapeBounds.size() * 
sizeof(Bounds), 0); }
 
   69    void                            RemoveShape(
uint inIndex);
 
   84    void                            ModifyShapes(
uint inStartIndex, 
uint inNumber, 
const Vec3 *inPositions, 
const Quat *inRotations, 
uint inPositionStride = 
sizeof(
Vec3), 
uint inRotationStride = 
sizeof(
Quat));
 
   89    void                            AdjustCenterOfMass();
 
   94    static void                     sRegister();
 
   98    virtual void                    RestoreBinaryState(
StreamIn &inStream) 
override;
 
  102    template <
class BoxType>
 
  103    struct GetIntersectingSubShapesVisitorMC : 
public GetIntersectingSubShapesVisitor<BoxType>
 
  105        using GetIntersectingSubShapesVisitor<BoxType>::GetIntersectingSubShapesVisitor;
 
  111            return GetIntersectingSubShapesVisitor<BoxType>::TestBounds(inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
 
  114        JPH_INLINE 
bool             ShouldVisitBlock(
UVec4Arg inResult)
 const 
  119        JPH_INLINE 
bool             ShouldVisitSubShape(
UVec4Arg inResult, 
uint inIndexInBlock)
 const 
  121            return inResult[inIndexInBlock] != 0;
 
  126    inline uint                     GetNumBlocks()
 const                                        { 
return ((
uint)mSubShapes.size() + 3) >> 2; }
 
  129    void                            EnsureSubShapeBoundsCapacity();
 
  134    void                            CalculateSubShapeBounds(
uint inStartIdx, 
uint inNumber);
 
  137    void                            CalculateLocalBounds();
 
  139    template <
class Visitor>
 
  140    JPH_INLINE 
void                 WalkSubShapes(Visitor &ioVisitor) 
const;                    
 
  143    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);
 
  144    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);
 
#define JPH_EXPORT
Definition: Core.h:214
 
unsigned int uint
Definition: Core.h:426
 
#define JPH_NAMESPACE_END
Definition: Core.h:354
 
std::uint32_t uint32
Definition: Core.h:429
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:348
 
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition: Memory.h:29
 
std::vector< T, STLAllocator< T > > Array
Definition: STLAllocator.h:81
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:100
 
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition: Shape.h:74
 
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
 
void AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)
Add a shape to the compound.
Definition: CompoundShape.cpp:37
 
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition: Mat44.h:13
 
Definition: MutableCompoundShape.h:31
 
JPH_OVERRIDE_NEW_DELETE MutableCompoundShape()
Constructor.
Definition: MutableCompoundShape.h:36
 
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition: MutableCompoundShape.h:59
 
Class that constructs a MutableCompoundShape.
Definition: MutableCompoundShape.h:15
 
Oriented box.
Definition: OrientedBox.h:18
 
Specialization of cast result against a shape.
Definition: CastResult.h:27
 
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:174
 
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13
 
Definition: SubShapeID.h:108
 
JPH_INLINE bool TestAnyTrue() const
Test if any of the components are true (true is when highest bit of component is set)
Definition: UVec4.inl:390
 
Definition: CompoundShape.h:135
 
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition: Shape.h:392
 
Definition: ShapeCast.h:69