Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
DecoratedShape.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
8
10
13{
15
16
17 DecoratedShapeSettings() = default;
18
20 explicit DecoratedShapeSettings(const ShapeSettings *inShape) : mInnerShape(inShape) { }
21 explicit DecoratedShapeSettings(const Shape *inShape) : mInnerShapePtr(inShape) { }
22
23 RefConst<ShapeSettings> mInnerShape;
24 RefConst<Shape> mInnerShapePtr;
25};
26
29{
30public:
32
34 explicit DecoratedShape(EShapeSubType inSubType) : Shape(EShapeType::Decorated, inSubType) { }
35 DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape) : Shape(EShapeType::Decorated, inSubType), mInnerShape(inInnerShape) { }
36 DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult);
37
39 const Shape * GetInnerShape() const { return mInnerShape; }
40
41 // See Shape::MustBeStatic
42 virtual bool MustBeStatic() const override { return mInnerShape->MustBeStatic(); }
43
44 // See Shape::GetCenterOfMass
45 virtual Vec3 GetCenterOfMass() const override { return mInnerShape->GetCenterOfMass(); }
46
47 // See Shape::GetSubShapeIDBitsRecursive
48 virtual uint GetSubShapeIDBitsRecursive() const override { return mInnerShape->GetSubShapeIDBitsRecursive(); }
49
50 // See Shape::GetMaterial
51 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
52
53 // See Shape::GetSupportingFace
54 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
55
56 // See Shape::GetSubShapeUserData
57 virtual uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const override;
58
59 // See Shape
60 virtual void SaveSubShapeState(ShapeList &outSubShapes) const override;
61 virtual void RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) override;
62
63 // See Shape::GetStatsRecursive
64 virtual Stats GetStatsRecursive(VisitedShapes &ioVisitedShapes) const override;
65
66 // See Shape::IsValidScale
67 virtual bool IsValidScale(Vec3Arg inScale) const override { return mInnerShape->IsValidScale(inScale); }
68
69 // See Shape::MakeScaleValid
70 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override { return mInnerShape->MakeScaleValid(inScale); }
71
72protected:
74};
75
#define JPH_EXPORT
Definition: Core.h:236
std::uint64_t uint64
Definition: Core.h:456
unsigned int uint
Definition: Core.h:452
#define JPH_NAMESPACE_END
Definition: Core.h:378
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
#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
@ Decorated
Used by DecoratedShape.
Definition: Array.h:36
Base class for shapes that decorate another shape with extra functionality (e.g. scale,...
Definition: DecoratedShape.h:29
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: DecoratedShape.h:48
const Shape * GetInnerShape() const
Access to the decorated inner shape.
Definition: DecoratedShape.h:39
RefConst< Shape > mInnerShape
Definition: DecoratedShape.h:73
virtual bool IsValidScale(Vec3Arg inScale) const override
Definition: DecoratedShape.h:67
JPH_OVERRIDE_NEW_DELETE DecoratedShape(EShapeSubType inSubType)
Constructor.
Definition: DecoratedShape.h:34
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition: DecoratedShape.h:45
virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override
Definition: DecoratedShape.h:70
DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)
Definition: DecoratedShape.h:35
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: DecoratedShape.h:42
Class that constructs a DecoratedShape.
Definition: DecoratedShape.h:13
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
Definition: Reference.h:151
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition: Shape.h:178
Definition: Shape.h:139
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: Vec3.h:17